プロパティと特殊メソッドをモジュールに追加することはできますか?私はそれをインポートすることはクラスインスタンスのように動作し、ボディはクラス定義として動作するようにモジュールを定義したいと思います。基本的には、このような醜い構文を避けることです:モジュールはプロパティを持つことができますか?
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クラスとして使用しているので、明確にするために、私はクラス/インスタンスメソッドを区別しません。
私は@propertyを使ってテストし、__bool__
を定義しましたが、どちらも期待通りに動作しませんでした。
編集(私はプロパティを使用する理由に関する情報):
私は財産game.speed
、機能game.paused()
と機能game.pause(bool)
を持っています。基本的には、一時停止時にゲームの速度を保存するための一時変数があります。ゲームが一時停止したときにゼロに設定されるプライベート速度変数があります。ユーザーが速度がゼロであると見なして、ゲームが一時停止している間に速度を変更できないようにして、ゲームが再開されるときに新しい速度を使用するようにすることは決してありません。
「ゲームインポートゲームから」を使用するのはなぜですか? –
プロパティはどのように機能しますか?メタクラス?メタクラスはどのようにGameクラスを参照していますか? – Darthfett
'from ... import'構文を使用すると、*モジュールのプロパティは必要ないと言っています。あなたのモジュールを使っている人は、そこにプロパティがあるとは期待していないので、モジュールからプロパティを落として、自分のコードで単に 'form ... import'を使うと、読みやすさは同じですが、他のプログラマーの期待に合っています。それは良いことです。 –