2016-07-02 8 views
-4

クラスのローカル変数を他のクラスで変更したい。私のスクリプトは次のようなものです:Newbie Pythonコードのデバッグ

import datetime 
b = [] 


class P: 
    def __init__(self): 
     self.count = 1 
     self.create() 

    def create(self): 
     global b 
     a = C(self.count) 
     for i in range(10): 
      a.print_name() 
     print b 


class C: 
    def __init__(self, *data): 
     self.test = data[0] 

    @staticmethod 
    def print_name(): 
     global b 
     b.append(datetime.datetime.now()) 
o = P() 

グローバル変数の使用を避ける方法。 Web上で私は "スーパー"の使用が問題を解決することがわかった。この点で助けてください。

答えて

0

Pインスタンスを受け入れるようにCコンストラクタを作成します。 Pのメソッドを呼び出して、インスタンス属性Pオブジェクトに項目を追加します。

0

あなたはおそらくクラス属性を探しています。属性としてbCクラスに追加する場合は、C.bおよびC().bとしてアクセスできます。つまり、クラスまたはインスタンスへの参照からアクセスできます。もちろん

class C(object): # classes in py2 should inherit from object! 
    b = [] # b inside C definition 

    @classmethod 
    def print_name(cls): 
     cls.b.append(datetime.datetime.now()) 

class P(object): 
    def __init__(self): 
    self.count = 1 
    self.create() 

    def create(self): 
    a = C(self.count) 
    for i in range(10): 
     a.print_name() 
    print C.b # or a.b 

、あなたもPbを配置することができます。この場合、do

def print_name(): 
     P.b.append(datetime.datetime.now())