Il seguente codice si comporta in modo diverso in Python 2 e Python 3 e non sono sicuro del perché.Differenza in "dir" tra Python 2 e 3
class Dataset(object):
def __getattr__(self, item):
if not item in dir(self):
print(item)
a = Dataset()
a.Hello
Il risultato in Python 3:
> Hello
Il risultato in Python 2:
__members__
__members__
__methods__
...
all'infinito finché è raggiunto un massimale ricorsione. Qual è la differenza nel comportamento di "dir"?
Modifica: E c'è una soluzione? se stesso. dict è la scelta più ovvia ma non include funzioni che si rivelano essere un problema nel mio codice.
In realtà, '__getattr __()' [non dovrebbe essere chiamato affatto] (https://docs.python.org/2/reference/datamodel.html#object.__getattr__) se l'attributo è già presente. – dhke