instance.attribute lookup

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:
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
 
S

Steven D'Aprano

There is a StackOverflow question [1] that points to this on-line book
[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.
[...]
I'm thinking step 1 is flat-out wrong and doesn't exist. Does anybody
know otherwise?

I'm thinking I don't even understand what step 1 means.

What's a Python-provided attribute, and how is it different from other
attributes?
 
E

Ethan Furman

Steven said:
There is a StackOverflow question [1] that points to this on-line book
[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.
[...]
I'm thinking step 1 is flat-out wrong and doesn't exist. Does anybody
know otherwise?

I'm thinking I don't even understand what step 1 means.

What's a Python-provided attribute, and how is it different from other
attributes?

Well, if /you/ don't understand it I feel a lot better about not
understanding it either! :)

Glad to know I'm not missing something (besides ESP, a crystal ball, and
a mind-reader!)

~Ethan~
 
M

Mark Lawrence

Steven said:
There is a StackOverflow question [1] that points to this on-line book
[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. [...]
I'm thinking step 1 is flat-out wrong and doesn't exist. Does anybody
know otherwise?

I'm thinking I don't even understand what step 1 means.

What's a Python-provided attribute, and how is it different from other
attributes?

Well, if /you/ don't understand it I feel a lot better about not
understanding it either! :)

Glad to know I'm not missing something (besides ESP, a crystal ball, and
a mind-reader!)

~Ethan~

My probably highly uneducated guess is that "Python-provided attribute"
refers to double underscore names. YMMV by several trillion light years :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,968
Messages
2,570,149
Members
46,695
Latest member
StanleyDri

Latest Threads

Top