0

我正在尝试将对象保存candle在字典candlebuffer中,但是它给了我下面的错误。我在挣扎;我的语法有什么问题?

    class Observer:
    def __init__(self):
        self.listeners = []

    def attach(self, listener):
        if not listener in self.listeners:
            self.listeners.append(listener)

    def notify(self, event):
        for listener in self.listeners:
            listener.update(event)


class CandleGenerator(Observer):
    def __init__(self,freq):
        Observer.__init__(self)
        self.freq = freq
        self.candle = Candle()

    def update(self,tick):
        self.candle.addTick(tick,self.freq) 
        if keyfunc(self.candle.timestamp,self.freq) != self.candle.ref_timestamp:
            self.notify(self.candle)
            self.candle = Candle()

class CandlePrinter:
    def update(self, candle):
        print "Bougie>>>>>> freq: %s %s %s %s %s %s %s %s %s " % (candle.freq,candle.last_price,candle.volume, candle.timestamp, candle.ref_timestamp, candle.open_price,candle.high_price,candle.low_price, candle.last_price)

class CandleBuffer:
    def __init__(self,candle):
        self.candlebuffer={0: candle}
    def update(self,candle):
        self.candlebuffer[candle.timestamp]= candle
        print self.candlebuffer


print('begin')

tickGenerator = TickGenerator()
candleGenerator1 = CandleGenerator(1)

candlePrinter = CandlePrinter()      
candleBuffer = CandleBuffer(5)    

tickGenerator.attach(candleGenerator1)
candleGenerator1.attach(candlePrinter)
candleGenerator1.attach(candleBuffer)

tickGenerator.generate()

它提供以下输出:

TypeError: __init__() takes exactly 2 arguments (1 given)
4

2 回答 2

2

既然您已经确认了我的怀疑,您必须将另一个参数传递给构造函数,并使用字典而不是集合:

class CandleBuffer():
    def __init__(self,candle):
        self.candlebuffer={0 : candle}
    def update(self,candle):
        self.candlebuffer[candle.timestamp]= candle

# ...
candleBuffer = CandleBuffer(a_candle)
candleBuffer.update(another_candle)
于 2013-04-07T13:56:48.807 回答
1

这不是导致您的错误的原因,但您需要使用 : 创建字典。

self.candlebuffer = { 0 : candle }

它在格式键上:值。

我猜你正在创建一个 CandleBuffer 而不在代码中的其他地方提供参数。

于 2013-04-07T13:46:09.620 回答