3

メソッド update で変数 freq が定義されていないのはなぜですか? init でメソッド candle を呼び出していますが、このメソッドには freq が含まれていますか?

class candle:
    def __init__(self):
        self.freq = None
        self.open_price = None
        self.high_price = None
        self.low_price = None
        self.last_price = None
        self.volume = 0

    def addTick(self,tick):
        if self.open_price is None:
            self.open_price = tick.price
        if self.high_price is None or tick.price >self.high_price:
            self.high_price = tick.price
        if self.low_price is None or tick.price <self.low_price:
            self.low_price = tick.price   
        self.last_price = tick.price
        self.volume = self.volume +1


    def update(self,tick):
        self.candle.addTick(tick)
        if keyfunc(current_time,freq) != reference_timestamp[freq]:
            self.notify(self.candle)
            self.candle = candle()
4

2 に答える 2

2

selfPython には暗黙的なものはありません。メンバー変数にアクセスするときは明示的にする必要があります。

if keyfunc(current_time,freq) != reference_timestamp[freq]:

する必要があります

if keyfunc(current_time, self.freq) != reference_timestamp[self.freq]:

reference_timestampグローバルであると仮定すると、どこで定義されているかわかりません。

于 2013-04-06T12:58:12.783 に答える
2

クラス インスタンス属性ではなく、ローカル変数 (そのスコープで定義されていない) にアクセスしようとしています。freq の代わりに self.freq を試してください。

于 2013-04-06T12:59:01.127 に答える