how to get names of attributes

Charles T. Smith cts.private.yahoo at gmail.com
Wed Dec 30 07:16:46 EST 2015


On 2015年12月30日 11:51:19 +0000, Charles T. Smith wrote:
> Hi,
>> How can I get *all* the names of an object's attributes? I have legacy
> code with mixed new style classes and old style classes and I need to
> write methods which deal with both. That's the immediate problem, but
> I'm always running into the need to understand how objects are linked,
> in particular when in pdb. The answers one always sees on StackOverflow
> is that you don't need to understand, understanding is not the pythonic
> way to do things.
>> Alternatively, is there are map documented somewhere - more complete
> than python/python-2.7.3-docs-html/library/stdtypes.html?
> highlight=class#special-attributes
>> Or, is the code available uncompiled somewhere on my machine?
>> Does anyone know *why* the __members__ method was deprecated, to be
> replaced by dir(), which doesn't tell the truth (if only it took an
> optional parameter to say: "be truthful")
>> cts

For example:
 (PDB)pp dir (newclass.__class__)
 ['__class__',
 '__delattr__',
 '__dict__',
 '__doc__',
 '__format__',
 '__getattribute__',
 '__hash__',
 '__init__',
 '__module__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 'm2']
 (PDB)pp dir (oldclass.__class__)
 ['__doc__', '__module__', 'm3']
 (PDB)pp (oldclass.__class__.__name__)
 'C3'
 (PDB)pp (newclass.__class__.__name__)
 'C2'
Both dir() invocations are lying to me. The old-style class even ignores 
the pretty-print command.
I'm glad I discovered __mro__(), but how can I do the same thing for old-
style classes?


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /