[英]Overriding properties in python3
In below code in test() method self.name is None.在 test() 方法中的以下代码中,self.name 为无。 I'm expecting it as 'B- Stack'.
我期待它是“B-Stack”。 Am I missing something?
我错过了什么吗?
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()
you are printing self.name
which is setter method not actual self.__name
.您正在打印
self.name
,它是 setter 方法而不是实际的self.__name
。
Either you can add getter method or print(self.__name)
in test method:您可以在测试方法中添加 getter 方法或
print(self.__name)
:
you can add getter method in B()您可以在 B() 中添加 getter 方法
@name.getter
def name(self):
return self.__name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.