Der folgende Code verhält sich in Python 2 und Python 3 anders, und ich bin nicht sicher, warum.Unterschied in "dir" zwischen Python 2 und 3
class Dataset(object):
def __getattr__(self, item):
if not item in dir(self):
print(item)
a = Dataset()
a.Hello
Das Ergebnis in Python 3:
> Hello
Das Ergebnis in Python 2:
__members__
__members__
__methods__
...
ad infinitum, bis eine Rekursion Obergrenze erreicht ist. Was ist der Unterschied im Verhalten von "dir"?
Edit: Und gibt es einen Workaround? selbst. dict ist die offensichtliche Wahl, aber es enthält keine Funktionen, die sich als ein Problem in meinem Code herausstellt.
Eigentlich haben kann, '__getattr __()' [sollte gar nicht aufgerufen werden] (https://docs.python.org/2/reference/datamodel.html#object.__getattr__), wenn das Attribut bereits vorhanden ist. – dhke