E
Ethan Furman
There is a StackOverflow question [1] that points to this on-line book
[2] which has a five-step sequence for looking up attributes:
I'm thinking step 1 is flat-out wrong and doesn't exist. Does anybody
know otherwise?
~Ethan~
[1]
http://stackoverflow.com/q/10536539/208880
[2]
http://www.cafepy.com/article/python_attributes_and_methods/ch01s05.html
[2] which has a five-step sequence for looking up attributes:
When retrieving an attribute from an object (print
objectname.attrname) Python follows these steps:
1. If attrname is a special (i.e. Python-provided) attribute for
objectname, return it.
2. Check objectname.__class__.__dict__ for attrname. If it exists and
is a data-descriptor, return the descriptor result. Search all bases
of objectname.__class__ for the same case.
3. Check objectname.__dict__ for attrname, and return if found. If
objectname is a class, search its bases too. If it is a class and a
descriptor exists in it or its bases, return the descriptor result.
4. Check objectname.__class__.__dict__ for attrname. If it exists and
is a non-data descriptor, return the descriptor result. If it exists,
and is not a descriptor, just return it. If it exists and is a data
descriptor, we shouldn't be here because we would have returned at
point 2. Search all bases of objectname.__class__ for same case.
5. Raise AttributeError
I'm thinking step 1 is flat-out wrong and doesn't exist. Does anybody
know otherwise?
~Ethan~
[1]
http://stackoverflow.com/q/10536539/208880
[2]
http://www.cafepy.com/article/python_attributes_and_methods/ch01s05.html