__bases__ misleading error message

Mario Figueiredo marfig at gmail.com
Sat Jan 24 11:16:26 CET 2015


Consider the following code at your REPL of choice

        class Super:
            pass

        class Sub:
            pass

        foo = Sub()

        Sub.__bases__
        foo.__bases__

The last statement originates the following error:

        AttributeError: 'Sub' object has no attribute '__bases__'

Naturally the 'Sub' object has an attribute __bases__. It's the instance 
that has not. So shouldn't the error read like:

        AttributeError: 'Sub' instance has no attribute '__bases__', or
        AttributeError: 'foo' object has no attribute '__bases__'





More information about the Python-list mailing list