例子
class A:
foo = 1
class B:
foo = 2
class C:
foo = 3
class D(A, B, C):
pass
def collect_foo(cls):
import inspect
foos = []
for c in inspect.getmro(cls):
if hasattr(c, 'foo'):
foos.append(c.foo)
return foos
现在 collect_foo(D)
返回 [1, 1, 2, 3]
- 1
加倍为 D
派生自 A
。问题是 - 如何获得唯一的 foo
。我想到的第一件事是检查属性是否在给定类中派生或声明 - 这可能吗?如何做到这一点?
最佳答案
检查一下
'foo' in c.__dict__
代替
hasattr(c, 'foo')
如果属性是在 c
本身中定义的,这只会产生 True
。
关于python - 检查类属性是否在给定类中定义或派生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5253397/