2017-01-29 8 views
0

私はクラス内の複数のメソッド間でオブジェクトを共有する必要があるゲームを作成していますが、オブジェクトが作成されていてもメソッドが認識できない問題があります。私が話していることの例です:Pythonクラス内のメソッド間でオブジェクトを共有する方法は?

import Economy 

Class Example: 
    economy = Economy.Economy() 

    def __init__(self, test): 
     self.test = test 
    def exampleMethod1(self): 
     economy.getMoney() 
    def exampleMethod2(self) 
     economy.addMoney(1) 

Pythonはメソッドにエラーがあり、オブジェクトが存在しないと言います。

+4

'self.economy.getMoney()'または 'Example.economy.getMoney()'にする必要があります。これは*クラス属性*ですが、グローバルスコープにはありません。 '' Class '!=' class''です。 – jonrsharpe

答えて

2

オブジェクトを使用すると、クラスのメソッド間でオブジェクトを共有できます。あなたのコードは

import Economy 

Class Example: 
    economy = Economy.Economy() 

    def __init__(self, test): 
     self.test = test 
    def exampleMethod1(self): 
     self.economy.getMoney() 
    def exampleMethod2(self) 
     self.economy.addMoney(1) 

となります。

+0

これは、各インスタンスに対して別々の 'Economy.Economy'インスタンスを作成します。 – chepner

+0

良い点、私は答えを更新しました。 – BluCode

+0

'' __init__'にはまったく入れないでください。それがどこにあったのかを定義しておいてください。 'self'はクラス属性にアクセスします。再割り当てしない限り、クラス属性のままです。これを行うには、すべてのインスタンスで属性として割り当てるグローバルを作成する方法が間違っています。 – ShadowRanger