【问题标题】:Python Getters and SettersPython Getter 和 Setter
【发布时间】:2016-02-24 12:55:38
【问题描述】:

我应该如何访问我的roll 方法中的类实例变量?

我应该使用self._value 访问self._value,还是使用self.value 访问我的setter? self._sides 同样的问题。

import random


class MSDie:
    def __init__(self, sides):
        self._sides = sides
        self._value = 1

    @property
    def sides(self):
        return self._sides

    @property
    def value(self):
        return self._value

    @value.setter
    def value(self, number):
        self._value = number

    def roll(self):
        self._value = random.randrange(1, self.sides + 1)

所以基本上,我应该像这样创建roll 方法吗:

def roll(self):
    self.value = random.randrange(1, self.sides + 1)

现在我知道如何以get_value/set_value 的传统方式正确地做到这一点,但我正在尝试学习如何创建更多的 Python 类。

出于好奇,为什么self.value(random.randrange(1, self.value + 1)self.value(self, random.randrange(1, self.sides + 1) 不访问self._value 变量并对其进行更改?

【问题讨论】:

    标签: python class properties getter-setter


    【解决方案1】:

    在您当前的实现中, value-property 没有用。如果你有一个设置器,例如,额外的检查,你必须决定roll 是否需要额外的检查。如果不确定,请使用self.value

    【讨论】:

    • 在什么情况下我的使用价值属性是?我只是在学习这些装饰器。
    猜你喜欢
    • 2018-05-11
    • 2020-05-29
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 2021-10-17
    • 2017-09-07
    • 1970-01-01
    相关资源
    最近更新 更多