Можно ли добавить свойства и специальные методы в модули? Я хочу определить модуль так, чтобы его импорт действовал как экземпляр класса, а тело - как определение класса. По сути, это чтобы избежать уродливого синтаксиса, подобного этому:
import game
if game.Game().paused:
print("The game is paused")
например. игровой модуль будет выглядеть так:
_Speed = 1
@property
def paused():
return _Speed == 0
И файл, использующий его:
import game
if game.paused:
print("The game is paused")
Кроме того, возможно ли определить специальные методы (например, __call__
)?
Для ясности, я не делаю различий между методами класса / экземпляра, поскольку я использую game.Game
как синглтон / borg class.
Я тестировал, используя @property и определяя __bool__
, но ни один из них не действует так, как я надеялся.
Редактировать (информация о том, почему я хочу использовать свойство):
У меня есть свойство game.speed
, функция game.paused()
и функция game.pause(bool)
. По сути, у меня есть временная переменная, используемая для хранения скорости игры, когда игра приостановлена. Существует частная переменная скорости, которая устанавливается в ноль, когда игра ставится на паузу. Я никогда не хочу, чтобы пользователь видел скорость равной нулю и мог изменять скорость во время приостановки игры, чтобы при возобновлении игры он использовал новую скорость.