[Python-Dev] inspect and metaclasses

Antoine Pitrou solipsis at pitrou.net
Fri Sep 6 19:02:47 CEST 2013


On Fri, 06 Sep 2013 08:14:09 -0700
Ethan Furman <ethan at stoneleaf.us> wrote:
> On 09/06/2013 07:47 AM, Armin Rigo wrote:
> >
> > Are you suggesting that inspect.getmro(A) would return (A, object,
> > type)?  That seems very wrong to me.
> 
> Currently, `inspect.getmro(A)` returns `(A, object)`.
> 
> Considering that Python actually will look in A's metaclass to find a class attribute, I think returning `(A, object, 
> type(A)` is appropriate:

No, I don't think it's appropriate at all. You are conflating two
things:
- the instance lookup of an attribute (on A, here)
- the class lookup when the instance lookup fails (on type, here)

Both lookups obey the same MRO rules, it just happens that the
second lookup uses a trivial MRO:

>>> type.__mro__
(<class 'type'>, <class 'object'>)


Regards

Antoine.




More information about the Python-Dev mailing list