如何单独更改 class 个属性?
How do change class attributes individually?
我阅读了一些有关 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
示例情况,单独更改属性:
情况一:
States().state = 3
情况2:
States().level_state = 2
该代码不起作用,因为您已将基础属性命名为与相应属性相同的名称。
您需要使用与 属性 getters/setters 所指的相同的属性名称:
class States:
def __init__(self, f=0, n=0):
self._state = n # <-- changed here
self._level_state = f # <-- changed here
@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
但这种情况的简单解决方案是根本不使用属性:
class States:
def __init__(self, f=0, n=0):
self.state = n
self.level_state = f
# done
我阅读了一些有关 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
示例情况,单独更改属性:
情况一:
States().state = 3
情况2:
States().level_state = 2
该代码不起作用,因为您已将基础属性命名为与相应属性相同的名称。
您需要使用与 属性 getters/setters 所指的相同的属性名称:
class States:
def __init__(self, f=0, n=0):
self._state = n # <-- changed here
self._level_state = f # <-- changed here
@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
但这种情况的简单解决方案是根本不使用属性:
class States:
def __init__(self, f=0, n=0):
self.state = n
self.level_state = f
# done