【发布时间】:2018-03-01 14:34:24
【问题描述】:
我读过一些关于 getter 和 setter 的文章,但还没有完全弄清楚。我的问题之一是 init 方法中的声明:如果该方法需要参数,我如何只更改一个属性?当然也欢迎任何其他方法。
class States:
def __init__(self, f=0, n=0):
self.state = n
self.level_state = f
@property
def state(self, n):
return self._state
@state.setter
def state(self, n):
self._state = n
@property
def level_state(self, f):
return self._level_state
@level_state.setter
def state(self, f):
self._level_state = f
示例情况,单独更改属性:
情况1:
States().state = 3
情况2:
States().level_state = 2
【问题讨论】:
-
您将下划线前缀的私有字段与非下划线前缀的getter和setter方法混合在一起。在所有方法中,使用字段。
-
也不要在 getter 中赋值。请阅读 python 属性
-
您的示例没有意义,因为您修改了立即符合垃圾回收条件的匿名对象。
s = States(); s.state = 3,但你为什么不直接写s = States(n=3)? -
抱歉代码很尴尬,我修正了一些明显的疏忽。
-
我仍然不确定如何单独修改两个不同的属性
标签: python python-3.x class getter-setter