2012-01-06 9 views
-1

をvarsのIだけで正常に動作..しかし、私の集約関数で、私はself.countersの辞書をクリアする必要がツイストloopingcallのアクセスクラスは

class Intake: 
    def __init__(self): 

     # 
     # aggregate dict to store all the counters 
     # 
     self.counters = {} 

     # 
     # start a looping call to run reach minute 
     # 
     self.lc = task.LoopingCall(self.aggregate, self.counters) 
     self.lc.start(60) 


    def aggregate(self, counters): 
     print counters 

したがって、次の例を持っています。私は、問題はこれをやったよ..私はその関数でself.countersを参照する場合

は私が

exceptions.AttributeError: Intake instance has no attribute 'counters' 
+0

...だから何が問題なのですか?それは動作しませんか? – kindall

+0

質問を編集して、エラーを下部に追加しました – Mike

答えて

3

を取得

def aggregate(self, counters): 
     print counters 

     self.counters = {} 

ような何かをしたいそれには、することをお勧めしますあなたの問題の実行可能な例、もし私があなたがそれをうまく動作すると試してみてください。

from twisted.internet import task 

class Intake: 
    def __init__(self): 

     # 
     # aggregate dict to store all the counters 
     # 
     self.counters = {} 
     self.count = 0 
     # 
     # start a looping call to run reach minute 
     # 
     self.lc = task.LoopingCall(self.aggregate, self.counters) 
     self.lc.start(1) 


    def aggregate(self, counters): 
     print '%d, %r, %r' % (self.count, counters, self.counters) 
     self.count += 1 
     self.counters = {} 

if __name__ == "__main__": 
    from twisted.internet import reactor 
    r = Intake() 
    reactor.run() 
関連する問題