我想构建一些虚拟检查,因此对于某些方法,只使用相同的顶级类,我想知道这是否是这样做的方法:
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]
运算符总是给我顶级类,并且该方法显然有效。我只是不确定这是否算好编程以及是否有其他解决方案。
感谢
答案 0 :(得分:-1)
使用type(x).__bases__
- 这是x
祖先的父元组,当它只有一个元素(对象)时,x
是顶级类的对象