我有一个Attribute类,可以表示类似speed或的不同属性armor。Attribute具有base,offset和和current值。这是使用示例最容易解释的示例,我将使用它speed作为示例。
speed = Attribute()。现在速度已经base很有价值,它就是玩家移动的速度。当我为球员配备更好的跑鞋时,他可获得50的额外速度。这意味着offset下注将设置为50。现在,当有人抛出使您减速10的咒语时,偏移量将变为50 - 10 = 40。属性类如下所示:
class Attribute(object):
def __init__(self, base):
self.base = base
self.offset = 0
@property
def current(self):
return self.base + self.offset
@current.setter
def current(self, value):
self.offset = 0 - (self.base - value)
现在,一个其他的方式来表示,这将是使用base,并current与具有offset作为一个属性:
class Attribute(object):
def __init__(self, base):
self.base = base
self.current = base
@property
def offset(self):
return 0 - (self.base - self.current)
@offset.setter
def offset(self, value):
self.current = self.health + value
它们两者都以完全相同的方式工作,是否有理由在一个之上使用另一个?
至尊宝的传说
BIG阳
相关分类