如何解决覆盖python3中的属性
在下面代码中的 test() 方法 self.name 是 None。我期待它是“B-Stack”。我错过了什么吗?
class A:
def __init__(self):
self.__name = None
@property
def name(self):
return self.__name
@name.setter
def name(self,value):
self.__name = "A- " + value
class B(A):
@A.name.setter
def name(self,value):
self.__name = "B- " + value
def test(self):
print(self.name) # It should print B- Stack
b = B()
b.name = "Stack"
b.test()
解决方法
您正在打印 self.name
,这是 setter 方法而不是实际的 self.__name
。
您可以在测试方法中添加 getter 方法或 print(self.__name)
:
你可以在B()中添加getter方法
@name.getter
def name(self):
return self.__name
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。