在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
复制相似问题