__bases__ misleading error message
tjreedy at udel.edu
Sun Jan 25 01:55:18 CET 2015
On 1/24/2015 4:51 PM, Marco Buttu wrote:
> On 24/01/2015 20:24, Terry Reedy wrote:
>> On 1/24/2015 5:16 AM, Mario Figueiredo wrote:
>>> Consider the following code at your REPL of choice
>>> class Sub:
>>> foo = Sub()
>>> The last statement originates the following error:
>> This is an anomalous situation.
'This situation' being that Someclass.attro works but Someclass().attro
Normally, if a class has an attribute,
In other words, if 'Someclass.attro' evaluates to an object
>> instances have the same attribute
then 'Someclass().attro' *normally* evaluates to the same object
>> (unless overriden).
(unless 'Someclass().attro' has been bound to a different object)
because attribute lookup on an instance reverts to attribute lookup on
the class and even its super classes (__bases__). Someclass.__bases__
is special; it is not listed by dir(Someclass), and it is not accessible
via an instance.
> That is not true:
What I said, as I meant it to be understood, is true.
Terry Jan Reedy
More information about the Python-list