是否可以向模塊添加屬性和特殊方法?我想定義一個模塊,以便導入它的行爲類似於一個類實例,並且該實體充當類定義。基本上,這是爲了避免醜陋的語法:模塊可以有屬性嗎?
import game
if game.Game().paused:
print("The game is paused")
E.g.遊戲模塊是這樣的:
_Speed = 1
@property
def paused():
return _Speed == 0
,並用它的文件:
import game
if game.paused:
print("The game is paused")
而且,是可以定義特殊的方法(如__call__
)?
要清楚,我沒有區分類/實例方法,因爲我將game.Game
用作單例/ borg類。
我已經使用@property進行了測試並定義了__bool__
,但都沒有按照我所希望的那樣行事。
編輯(爲什麼我想用一個屬性信息):
我有一個屬性game.speed
,功能game.paused()
和功能game.pause(bool)
。基本上,我有一個臨時變量,用於在遊戲暫停時存儲遊戲速度。當遊戲暫停時,私人速度變量被設置爲零。我不希望用戶看到速度爲零,並且能夠在遊戲暫停時修改速度,以便在遊戲恢復時使用新速度。
爲什麼不直接使用'from game import Game'? – 2012-03-30 05:09:37
屬性如何工作?元類?元類如何引用Game類? – Darthfett 2012-03-30 05:11:52
我在說,如果你使用'from ... import'語法,你*不需要模塊上的*屬性。使用你的模塊的人不會期望它有屬性,所以如果你從模塊中刪除屬性,並且只需在你自己的代碼中使用'form ... import',你將獲得相同的可讀性,但是你的API會更好符合其他程序員的期望,這是一件好事。 – 2012-03-30 05:14:22