Python:获取顶级类

Python:获取顶级类,python,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) 原则上,我只想确保当func

我想构建一些虚拟检查,以便对于某些方法,只使用相同的顶级类,我想知道这是否是实现这一点的方法:

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)

原则上,我只想确保当
func
中的输入
x
不属于同一类(或继承)时,不会调用方法。
。\uuumro\uuu[-2]
操作符总是给我一个顶级类,这个方法显然是有效的。我只是不确定这是否被认为是正常的编程,以及是否有其他解决方案 使用
type(x)。\uuuuu bases\uuuuuu
-这是
x
祖先的父元组,当它只有一个元素(对象)时,
x
是顶级类的对象。

您到底想检查什么?为什么不直接使用
isinstance
?啊,这正是我想听到的,所以if行变为if-isinstance(x,A)我只是想确保,无论何时调用func,x也必须是类A(或继承A的B)谢谢!!“我只是想确保,当输入时不会调用方法”-当输入是什么?@HansSnah:是的,这就是
isinstance()
正确测试的内容。@user2357112:对不起,我希望现在更清楚。无论如何,我已经得到了我一直在寻找的答案
type(x)。\uuuumro\uuuuuuuu>是一个完整的祖先列表,不仅仅限于直接基。是的,显然我不理解这个问题。我以为OP想确保
x
A
的一个实例,而不是任何派生类(让我困惑的是“唯一顶级类”的句子:)