(Это не про атомное испытание и установить)Можно ли добавить test & set, test & clear в класс bool?
Все, что я хочу, чтобы иметь возможность писать код так:
need_cleanup = True
...
if need_cleanup.test_and_clear():
cleanup()
вместо:
if need_cleanup:
cleanup()
need_cleanup = False
ИМХО это делает не сломайте ничего в классе bool.
Попытки добавить метод закончилась:
TypeError: can't set attributes of built-in/extension type 'bool'
Это, вероятно, связано с известным ограничением, что класс BOOL не может быть наследнике, но я не хочу его подкласса.
Есть ли способ вокруг него?
EDIT: Я думаю, что у меня есть ответ. Это невозможно, потому что bool - неизменный. Переключение с False
на True
(или наоборот) заменяет объект bool на новый, который идентичен константе True
или False
соответственно. Очевидно, что вызов метода не может этого сделать. Запретное подклассирование просто отвлекало мое внимание ...