Ant*_*ong 2 python inheritance properties
这是一个例子
class A(object):
def f1(self):
return []
test1 = property(f1)
class B(A):
def f1(self):
return [1, 2]
if __name__ == "__main__":
b = B()
print b.test1
Run Code Online (Sandbox Code Playgroud)
我希望输出为[1,2],但它会打印[].
这与我的期望相反.
我在代码中犯了什么错误吗?如果没有,我认为它是这样工作的,因为当创建属性test1时,它被绑定到基类A的f1函数.有什么可能的替代实现来实现我想要的?
f1如果您不希望污染类命名空间,可以使用lambda函数推迟查找
class A(object):
def f1(self):
return []
test1 = property(lambda x:x.f1())
Run Code Online (Sandbox Code Playgroud)