roll
方法中访问类实例变量?我应该使用self._value
访问self._value
还是使用self.value
访问我的二传手?同问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
的传统方式,但我正在尝试学习如何创建更多的pythonic类。
出于好奇,为什么self.value(random.randrange(1, self.value + 1)
或self.value(self, random.randrange(1, self.sides + 1)
无法访问self._value
变量并进行更改?
答案 0 :(得分:4)
在当前的实现中,value-property没有用。如果你有一个setter,例如,附加检查,你必须决定,roll
是否需要额外的检查。如果不确定,请使用self.value
。