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 に答える