【发布时间】:2022-01-11 07:43:27
【问题描述】:
请解释一下我对 getter 和 setter 的不理解,当我尝试实例化 Test 类时,这段代码已经捕获了异常? 在我看来,同样的工作here。
我的目标是根据a 和b 更新c,据我所知,所有这些属性都应该可以从类外部访问,即公共字段。
class Test:
def __init__(self, p1=50, p2=20):
self.a = p1
self.b = p2
@property
def a(self):
return self._a
@a.setter
def a(self, val):
self._a = val
self._c = self.b - val // 5
@property
def b(self):
return self._b
@b.setter
def b(self, val):
self._b = val
@property
def c(self):
return self._c
>>> c = Test()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "...\getter_and_setter.py", line 3, in __init__
self.a = p1
File "...\getter_and_setter.py", line 12, in a
self._c = self.b - val // 5
File "...\getter_and_setter.py", line 16, in b
return self._b
AttributeError: 'Test' object has no attribute '_b'
【问题讨论】:
-
请注意,有时您的变量有下划线,有时没有。这不应该在整个代码中保持一致吗?
标签: python python-2.7 properties getter-setter