On Wed, 30 Dec 2015 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? -- https://mail.python.org/mailman/listinfo/python-list