[Tutor] atr in dir Vs. hasattr
Steven D'Aprano
steve at pearwood.info
Wed Mar 16 14:49:36 CET 2011
Tom Zych wrote:
> I suppose there must be some reliable way to get a list of *all* an
> object's attributes, but I don't see it.
Nope, there isn't, because Python allows classes to define arbitrary
attributes at runtime.
>>> import random
>>> class Funny:
... def __getattr__(self, name):
... if name == 'weird' and random.random() < 0.5:
... return "Yes, that's very strange."
... else:
... raise AttributeError
...
>>> f = Funny()
>>> f.weird
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in __getattr__
AttributeError
>>> f.weird
"Yes, that's very strange."
Then add in __getattribute__, inheritance from superclasses,
metaclasses, custom dictionary types for __dict__ (Python 3 only), and
descriptors, and, well, there really isn't a guaranteed list of attributes.
--
Steven
More information about the Tutor
mailing list