【发布时间】:2023-04-05 04:35:02
【问题描述】:
class p1(object): pass
class p2(p1): pass
所以 p2 是 p1 的子类。有没有办法以编程方式找出 p1 是 p2 的超类[之一]?
【问题讨论】:
标签: python reflection superclass
class p1(object): pass
class p2(p1): pass
所以 p2 是 p1 的子类。有没有办法以编程方式找出 p1 是 p2 的超类[之一]?
【问题讨论】:
标签: python reflection superclass
我认为你的意思是使用“class”而不是“def”.. :) 不管怎样,试试p2.__bases__
【讨论】:
【讨论】:
issubclass(A, A) 的计算结果为 True。这可能不直观。至少在我看来,一个类不是它自己的子类似乎很明显。 issubclass 应该被称为 istypeofclass。
set 的我来说,这并不困扰我。 A 是 A 的子集。
根据您要执行的操作,“mro”方法也很有用。
【讨论】:
使用
>>> class p1(object): pass
>>> class p2(p1): pass
>>> p2.__bases__
(<class '__main__.p1'>,)
【讨论】:
__bases__ 只会给你直接的父母(在类定义的括号中的那些),而 issubclass 检查整个继承链。