如何单独更改类属性?

做吗

我读了一些关于 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
mkrieger1

该代码不起作用,因为您已将基础属性命名为与相应属性相同的名称。

您需要使用与属性 getter/setter 所指的相同的属性名称:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章