Это всего лишь принцип. Я бы хотел, чтобы атакованная битовая версия была обновлена, когда одна из атак битов (рыцарь, слон или пешка) была изменена без повторения строки 1. Возможно ли это? Каков наилучший способ сделать это? В классе класса borg или просто с использованием поведения словарей:обновление бит бит-доски при обновлении одной атаки
attacked = pawn_attacks | Рыцарь смерти | bishop_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
Спасибо. Да, конечно. Я просто вникаю в сложность дескриптора. – user2718378
На самом деле это не работает и/или я сам себя плохо объяснил. Я добавил код выше. Я что-то упускаю? – user2718378
Вы назначаете 'test.pawn_attacked = 2' и что **' pawn_attacked' ** (в отличие от ** ** 'pawn_attacks' **, назначенного ранее и используемого и назначенного повсюду) атрибут никогда не используется или не упоминается снова нигде в ваш код; что вы ожидали ** в результате такого присвоения атрибута, атрибуту, не связанному ни с чем другим, упомянутым ни в вопросе, ни в ответе ?! Я подозреваю, что это опечатка, и в этом случае возникает очевидный вопрос, как ** ваша ** опечатка недействительна ** мой ** ответ, молитесь? –