класс доступа витой петли - PullRequest
0 голосов
/ 07 января 2012

У меня есть следующий пример

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.У меня проблемы с этим ..

Я хочу сделать что-то вроде

    def aggregate(self, counters):
        print counters

        self.counters = {}

Если я ссылаюсь на self.counters в этой функции, я получаю

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

1 Ответ

3 голосов
/ 07 января 2012

Это хорошая идея, чтобы включить работоспособный пример вашей проблемы, если я попробую то, что вы описываете, она прекрасно работает.

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()
...