这只是一个原则。我想被攻击的位板被更新时,其中一个攻击位板(骑士,主教或典当)被改变,而不必重复第1行。这可能吗?最好的方法是什么?以博格类的方式或简单地使用字典的行为:
攻击=典当攻击|骑士攻击|主教攻击
典当攻击=(1<;<;(典当+9))|(1<;<;(典当+7))
当其中一个攻击发生变化时,这不会透明/自动地工作。下面攻击的结果总是1。你知道吗
class Test(object):
def __init__(self):
self.pawn_attacks = 0
self.knight_attacks = 0
self.bishop_attacks = 0
@property
def attacked(self):
return self.pawn_attacks | self.knight_attacks | self.bishop_attacks
test = Test()
test.pawn_attacks = 1
print test.attacked
test.pawn_attacks = 2
print test.attacked
如果要编写类,可以将
attacked
设为(只读)属性,以便在需要时透明地重新计算:现在给定类的一个实例
x
,x.attacked
将始终是最新的(缓存到只在需要时重新计算是不必要的,因为操作是如此基本)。你知道吗如果你不想创建一个类,你就必须创建一个
attacked
特别是一个函数来实现同样的想法。然而,虽然Python没有像其他语言那样强制您使用类,但是在类提供结构和/或方便时使用类(如这里所示)仍然是一个不错的选择想法:-)你知道吗相关问题 更多 >
编程相关推荐