2017-08-25 5 views
0

私はPythonでゲームを作っています。スクリーンに何かを描画するには、表示面であるpygameのオブジェクトが必要です。このオブジェクトは、すべてのクラスで別々のファイルで参照される必要があります。今、すべてのクラスのすべて__init__()メソッドは、サーフェスオブジェクトを手動でパラメータに追加する必要があります。それは面倒になり、コードが厄介になります。クラス間で特定のオブジェクトを別々のファイルで共有する方がいいですか?変数をクラス__init__メソッドに自動的に渡す方法は?

+2

サンプルコードを提供できますか? – blacksite

+0

"明示的に暗黙的に優れています"( 'import this'による)。 – martineau

答えて

0

これを行う簡単な方法の1つは、クラス属性を使用し、それを設定するクラスメソッドを提供することです。

class Class: 
    surface = None 

    @classmethod 
    def set_surface(cls, surface): 
     cls.surface = surface 

    def __init__(self, arg1, arg2, arg3): 
     print('surface: {}'.format(self.surface)) 

c1 = Class(1, 2, 3) # -> surface: None 
Class.set_surface(42) 
c2 = Class(1, 2, 3) # -> surface: 42 
0

これを行うにはいくつかの方法がありますが、最も一般的なのはおそらくグローバルオブジェクトです。しかし、おそらくそれを処理する最良の方法は、表示面(およびプロジェクト内で広く使用されているもの)をインポートするモジュールに入れることです。新しいフォルダ 'Screen'にファイル__init__.pyを作成します。 __init__.pyで

は、次のように置く:

screen = screenObject() 

その後、あなたはあなただけのことができ、画面のオブジェクト必要なすべてのファイルに:あなたがそれを必要な場所

from Screen import screen 

それからちょうどあなたのオブジェクトとして画面を使用します。 Pythonのモジュールは、初めて読み込まれたときや他の方法で共有されたときに実行されるため、この画面オブジェクトはどこでも同じものになります。

関連する問題