在Python中的大多数类型/类上,我可以在没有参数的情况下调用.mro()。但在type及其后代身上却没有:
In [32]: type(4).mro()
Out[32]: [int, object]
In [33]: type(type(4)).mro()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-33-48a6f7fcd2fe> in <module>()
----> 1 type(type(4)).mro()
TypeError: descriptor 'mro' of 'type' object needs an argument看起来我可以从type(type(4)).mro(type(4))中得到我想要的东西,但是为什么我不能像在其他地方那样直接调用mro()呢?
发布于 2015-12-18 15:27:49
因为mro是元类的一种方法,它需要一个实例--即一个类--就像给定一个普通类C和一个方法m,您可以调用C.m(inst)或inst.m(),但是不能调用C.m(),因为它需要self参数。
如果您想使用元类或type本身调用type,则可以使用type.mro(type)。
https://stackoverflow.com/questions/34358767
复制相似问题