ger*_*rit 5 python metaclass method-resolution-order
在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
Run Code Online (Sandbox Code Playgroud)
看来我可以得到我想要的东西type(type(4)).mro(type(4)),但为什么我不能mro()像其他地方那样直接打电话?
因为mro是元类的方法,它需要一个实例-即一类- ,很像给一个普通的类C和方法m,你可以打电话C.m(inst)或inst.m(),但你不能叫C.m(),因为它预计self的说法.
如果您想mro使用元类或其type自身进行调用,则可以使用type.mro(type).
| 归档时间: |
|
| 查看次数: |
584 次 |
| 最近记录: |