Python:获得顶级课程

时间:2015-03-24 21:46:26

标签: python

我想构建一些虚拟检查,因此对于某些方法,只使用相同的顶级类,我想知道这是否是这样做的方法:

class A:
    def func(self, x):
        if self.__class__.__mro__[-2] == x.__class__.__mro__[-2]:
            print("OK!")

class B(A): pass

ins_a = A()
ins_b = B()

ins_a.func(x=ins_b)

原则上我只想确保当x中的输入func不属于同一类(或继承)时,不会调用方法。 .__mro__[-2]运算符总是给我顶级类,并且该方法显然有效。我只是不确定这是否算好编程以及是否有其他解决方案。

感谢

1 个答案:

答案 0 :(得分:-1)

使用type(x).__bases__ - 这是x祖先的父元组,当它只有一个元素(对象)时,x是顶级类的对象