这只是一个原则。我希望在更改攻击位板(骑士、主教或典当)之一时更新被攻击的位板,而不必重复第 1 行。这可能吗?做这个的最好方式是什么?以 borg 类的方式或简单地使用字典的行为:
被攻击 = pawn_attacks | 骑士攻击 | 主教攻击
pawn_attacks = (1 << (pawn + 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