具有类及其元类的“ super”

时间:2019-01-28 06:08:03

标签: python python-3.x super

签名为:super([type[, object-or-type]])。其doc说:

  

如果省略第二个参数,则返回的超级对象未绑定。如果第二个参数是一个对象,则isinstance(obj, type)必须为true。如果第二个参数是类型,则issubclass(type2, type)必须为true(这对于类方法很有用)。

根据文档,如果有人想要super(metatype, type),则第二个参数是类型,因此issubclass(type, metatype)必须为true。但是我的测试程序表明它可能是错误的:

#!/usr/bin/env python3

class M0(type):
    def wtf(self):
        print('M0')

class M1(M0):
    def wtf(self):
        print('M1')

class C0(metaclass=M1):
    @classmethod
    def wtf(cls):
        assert issubclass(C0, M1) == False
        super(M1, C0).wtf()

C0.wtf()

这是保证的还是不确定的?

0 个答案:

没有答案