Python 更新一次攻击时更新攻击位板

Python 更新一次攻击时更新攻击位板,python,bitboard,Python,Bitboard,这只是一个原则。我希望当骑士、主教或典当的一个攻击比特板被更改时,被攻击的比特板被更新,而不必重复第1行。这可能吗?最好的方法是什么?以博格类的方式或简单地使用字典的行为: 攻击=当兵攻击|骑士攻击|主教攻击 pawn_attacks=1如果您正在编写一个类,则可以将被攻击的属性设置为只读属性,以便在需要时透明地重新计算: ... rest of the class ... @property def attacked(self): return self.pawn_attacks |

这只是一个原则。我希望当骑士、主教或典当的一个攻击比特板被更改时,被攻击的比特板被更新,而不必重复第1行。这可能吗?最好的方法是什么?以博格类的方式或简单地使用字典的行为:

攻击=当兵攻击|骑士攻击|主教攻击


pawn_attacks=1如果您正在编写一个类,则可以将被攻击的属性设置为只读属性,以便在需要时透明地重新计算:

... rest of the class ...

@property
def attacked(self):
    return self.pawn_attacks | self.knight_attacks | self.bishop_attacks
现在给定一个类的实例x,x.attacked将始终是最新的缓存,仅在不保证需要时才重新计算,因为该操作非常基本


如果你不愿意创建一个类,那么你必须创建一个函数来实现同样的想法。然而,虽然Python不会像其他语言那样强制您使用类,但是在类提供结构和/或便利时使用类(如此处所示)仍然是一个好主意:-

谢谢。当然可以。我只是想了解一下描述词的复杂性。实际上,它不起作用,或者我解释得很糟糕。我已经在上面添加了代码。我遗漏了什么吗?您正在分配test.pawn\u attacked=2,并且该pawn\u attacked与之前分配的pawn\u attacked相反&used and assigned everywhere属性在代码中的任何地方都不会再次使用或引用;对于与问题或答案中提到的任何其他内容无关的属性,您认为这样的属性分配会产生什么结果?!我怀疑这是一个打字错误,在这种情况下,显而易见的问题是,你的打字错误如何使我的答案无效,请问?是的,肯定是一个打字错误:我编辑了代码。正如我写的那样,它很有效,非常强大,我是一名班级新手。再次感谢。
... rest of the class ...

@property
def attacked(self):
    return self.pawn_attacks | self.knight_attacks | self.bishop_attacks