3
确定哪个Python类在继承时定义属性的最简单方法是什么?例如,假设我有:如何确定哪个Python类在继承时提供属性
class A(object):
defined_in_A = 123
class B(A):
pass
a = A()
b = B()
,我想这个代码传递:
assert hasattr(a, 'defined_in_A')
assert hasattr(A, 'defined_in_A')
assert hasattr(b, 'defined_in_A')
assert hasattr(B, 'defined_in_A')
assert defines_attribute(A, 'defined_in_A')
assert not defines_attribute(B, 'defined_in_A')
我将如何实现虚构defines_attribute
功能?我的第一个想法是遍历整个继承链,并使用hasattr
来检查属性的存在,最深的匹配被认为是定义者。有一种更简单的方法吗?
这是什么实际使用情况? – jonrsharpe
'if'defined_in_A'not in vars(B)'可能就是你正在寻找的东西,只检查在该对象上定义的实例变量而不检查它的基数或类型。 –