【发布时间】:2017-11-28 05:27:23
【问题描述】:
Pylint 告诉我,我在 __init__ 之外设置了 _age,这在风格上并不好,我明白为什么。但是,如果我使用属性来确保我的属性是在某个时间间隔内设置的,那么在属性设置器中设置属性确实有意义。如何调和这两种相反的想法?
class Person:
def __init__(self, age, height, weight):
self.age = age
@property
def age(self):
return self._age
@age.setter
def age(self, age):
if 18 <= age <= 81:
self._age = age
else:
raise ValueError('You are either too old or too young')
【问题讨论】:
-
如果你正在使用这样的 getter/setter,那么在你的 init 中你应该做
self._age = age -
self.age = age应该是self._age = age -
如果它有助于解决您的问题,您应该考虑接受答案,以便将其标记为有帮助,以供未来的读者阅读。如果不是,请说明解决方案不起作用的原因。
标签: python properties attributes