我一直在为游戏制作一个小型库存系统(但不是问题),并制作了一个方法,该方法使用一个项目,然后将ItemStack的大小减一。因为堆栈大小的变化,我需要重新计算堆栈的权重和整体价值,我想知道是否有更好的方法来完成它而不是我做了什么?有没有办法检测stack_size何时更改并更新权重和值,可能使用装饰器或其他东西?非常感谢帮助。
def use_item_stack(self):
self.stack_size -= 1
self.stack_weight = self.item_weight * self.stack_size
self.stack_value = self.item_value * self.stack_size
答案 0 :(得分:0)
如果堆栈已更新,您所做的事情似乎足够合乎逻辑,因此需要在那时重新计算其总体重量。
然而,您可以拥有decorator
并将其包含在所有"堆栈操作"中,因此每当他们更新堆栈时,包装器也会更新总重量:
def stack_sensitive(fn):
def wrapper():
ss = STACK_SIZE
fn()
if STACK_SIZE != ss: pass # recalculate
return wrapper
答案 1 :(得分:0)
使用属性!
class Game(object):
def __init__(self):
self._stack_size = 5
@property
def stack_size(self):
return self._stack_size
@stack_size.setter
def stack_size(self, val):
self._stack_size = val
#do some more updates of other things