Python的getter和setter 如何在roll方法中访问类实例变量?

Python的getter和setter 如何在roll方法中访问类实例变量?,python,class,properties,getter-setter,Python,Class,Properties,Getter Setter,我应该使用self.\u value访问self.\u value还是使用self.value访问我的setter?对于self.\u方,同样的问题 import random class MSDie: def __init__(self, sides): self._sides = sides self._value = 1 @property def sides(self): return self._sides

我应该使用
self.\u value
访问
self.\u value
还是使用
self.value
访问我的setter?对于
self.\u方
,同样的问题

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\u value
/
set\u value
方法,但我正在尝试学习如何创建更多的pythonic类


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

在您当前的实现中,value属性没有任何用处。如果您有一个setter,例如带有附加检查,您必须决定
roll
是否需要附加检查。如果不确定,请在当前实现中使用
self.value
默认情况下,value属性没有任何用处。如果你有一个setter,例如,带有附加检查的setter,你必须决定
roll
是否需要附加检查。如果不确定,请使用
self.value

在什么情况下我的value属性会被使用?我只是在学习这些装饰器。在什么情况下我的value属性会被使用有用吗?我只是在了解这些装饰师。