抽象メソッドのみを持つ Python でクラスを作成し、クラスにすべてのメソッドを実装しましたBasicMR
(すべてのコードがBasicMR
スニペットに存在するわけではありませんが、メソッドtest_stationary()
は内部で呼び出されますself.generate_positions()
)。
class Strategy(object):
__metaclass__=ABCMeta
@abstractmethod
def generate_positions(self):
raise NotImplementedError("You must implement generatePositions()!")
@abstractmethod
def get_positions(self):
raise NotImplementedError("You must implement getPositions()!")
class BasicMR(Strategy):
def __init__(self, security, lookback=30):
self.__securities = []
self.__securities = security # it could be either one security or a list of security objects
self.__positions = self.generate_positions()
def test_stationary(self, lb=30):
if not isinstance(self.__securities, list):
securities = [self.__securities]
else:
securities = self.__securities
prices = [one_stock.get_prices(lb) for one_stock in securities] # list comprehension
results = [ts.adfuller(price_series, regression="c", autolag='AIC') for price_series in prices]
simple_results = [BasicMR.simplify_adf_results(result[1], result[0], result[4]) for result in results]
if len(simple_results) == 1:
return simple_results[0]
else:
return simple_results
def generate_positions(self, long_only=False, time_frame=20, max_holding_period = 20):
result = []
names = []
# HERE IS SOME CODE
return [names, result]
def get_positions(self):
return self.__positions
ただし、 のインスタンスを作成するとBasicMR()
、次の行でエラーが発生します。
if not isinstance(self.__securities, list):
エラー:
AttributeError: 'int' object has no attribute '_BasicMR__securities'
どういうわけか、私の BasicMR クラスのインスタンスが type として認識されてしまいint
、そのエラーをどうすればよいかわかりません。