getting all user defined attributes of a class
George Sakkis
george.sakkis at gmail.com
Thu Feb 7 14:49:16 EST 2008
On Feb 7, 1:42 pm, Amit Gupta <emaila... at gmail.com> wrote:
> Thanks. What I found is: If I call iterate over the __dict__ of the
> instance of the class, I only get user-atttributes and not built-in
> attributes. I have an instance of that class, anyway, so this will do.
> However, I wonder if I am getting just lucky and this might change in
> future. In that regard the solution provides by all posters above
> might well be more robust.
Instances and classes have separate namespaces:
class X(object):
x = 1
def __init__(self):
self.y = 2
>>> X().__dict__
{'y': 2}
>>> X.__dict__
<dictproxy object at 0xb7beab9c>
>>> X.__dict__.items()
[('__module__', '__main__'),
('__dict__', <attribute '__dict__' of 'X' objects>),
('x', 1),
('__weakref__', <attribute '__weakref__' of 'X' objects>),
('__doc__', None),
('__init__', <function __init__ at 0xb7b5a454>)]
And neither of those includes attributes defined in superclasses,
classes with __slots__, pseudo-attributes through __getattr__ and
possibly more I've missed.
George
More information about the Python-list
mailing list