Consideriamo qualsiasi classe pitonica definita dall'utente. Se chiamo dir(obect_of_class)
, ho la lista dei suoi attributi:Modifica della funzione built-in
['__class__', '__delattr__', '__dict__', '__dir__', ... '__weakref__', 'bases',
'build_full_name', 'candidates', ... 'update_name'].
si possono vedere 2 tipi di attributi in questa lista:
- attributi built-in,
- definito dall'utente.
Devo eseguire l'override di __dir__
in modo che restituisca solo attributi definiti dall'utente. Come posso farlo?
E 'chiaro che se in una funzione sovrascritta mi chiamo, mi dà una ricorsione infinita. Quindi, voglio fare qualcosa del genere:
def __dir__(self):
return list(filter(lambda x: not re.match('__\S*__', x), dir(self)))
ma eludere la ricorsione infinita.
In generale, come è possibile modificare una funzione incorporata se non si desidera scriverla da zero ma si desidera modificare la funzione esistente?
Hai provato a utilizzare 'dir (ClassName)'? – DainDwarf