Невозможно получить доступ к переменным экземпляра класса

У меня есть следующий базовый класс (он наследует от класса в платформе PyAlgoTrade):

В методе init я инициализирую переменную экземпляра класса self.__instrument.

class BaseStrategy(strategy.BacktestingStrategy):

    def __init__(self, feed, instrument, cash):
        feed = DataFrameBarFeed(feed, instrument, barfeed.Frequency.DAY)
        super(BaseStrategy, self).__init__(feed, cash)
        self.__position = None
        self.__instrument = instrument

    def onEnterOk(self, position):
        execInfo = position.getEntryOrder().getExectionInfo()
        self.info("BUYING @ {}".format(execInfo.getPrice()))

    def onEnterCanceled(self, position):
        self.__position = None

    def onExitOk(self, position):
        execInfo = position.getExitOrder().getExectutionInfo()
        self.info("SELL @ {}".format(execInfo.getPrice()))
        self.__position = None

    def onExitCanceled(self, position):
        self.__position.exitMarket()

    def onBars(self, bars):
        """
        Please provide an implementation for this method
        :param bars:
        :return:
        """

Я пытаюсь реализовать следующий метод путем наследования от класса BaseStrategy:

class Strat(BaseStrategy):

    def onBars(self, bars):
        print self.__instrument

Затем я создаю объект Strat и затем запускаю его:

def main():
    tickers = ["V"]
    portfolio = {ticker : pull_daily_stock_data(ticker, 'google', start_date='2010-01-01', end_date='2017-11-2')
             for ticker in tickers}

    strategy = Strat(portfolio["V"], "V", cash=10000)
    strategy.run()

Однако, когда я пытаюсь получить доступ к self._instrument в моей реализации, я получаю ошибку атрибута. Я не понимаю, почему я не могу получить доступ к self._instrument, когда я инициализирую его в родительском классе BaseStrategy. Есть ли способ получить доступ к этой переменной экземпляра из родительского класса?

Любая помощь приветствуется, спасибо.

0 ответов

Другие вопросы по тегам