以下是我所做的一部分:
class Something(object):
def __init__(self):
self._loader = 100
def _get_loader(self):
return self._loader
def _set_loader(self, val):
self._loader = self._loader+val
loader = property(_get_loader, _set_loader)
def fire(self):
fired = random.randint(1, 21)
self.loader = self.loader-fired
print("Bullets remaining : {}".format(self.loader))
M = Something()
M.fire()
fire方法中的属性self.loader没有按我所希望的那样更新。它不是做loader-fired,而是做loader-something。我想用激发值减去loader,但它没有如我所愿。每次调用fire()时,它都显示一个递增的值
错误位于“setter”处:
在这里,您可以将
val
添加到self._loader
,假设您将其设置为self.loader = val
。所以如果你写:使用
self.loader
例如100
,并激发3
,则self.loader-fired
是97
,并且通过设置self.loader
,因此您将97
添加到self_loader
值设置器通常具有以下形状:
所以你的代码应该是这样的:
这里的一个潜在问题是,如果您继续调用
.fire()
,最终_loader
将获得一个低于零的值。因此,您可能希望在此处使用max(0, ...)
来防止:如果您调用
.fire()
并且子弹数为零,您可能还希望引发一个错误,因为我假设没有子弹就不能开火相关问题 更多 >
编程相关推荐