问题描述
在下面代码中的 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