在这个项目中,我有两个类。
class StockEntity:
def __init__(self, ticker, exchange = 'NASDAQ'):
self.ticker = ticker
self.exchange = exchange
# Get the history
ticker = yf.Ticker(self.ticker)
self.stock_hist = ticker.history(period = "max")
class Curve(StockEntity):
def __init__(self, ticker, startdate, type_of_curve, hierarchy_order):
self.ticker = StockEntity.ticker
self.startdate = startdate
self.type_of_curve = type_of_curve
self.hierarchy_order = hierarchy_order
self.stock_hist = StockEntity.stock_hist
这里的概念是 StockEntity的每个实例都有一个股票代码 和一个股票交易数据的历史。
所以我会说AAPL = StockEntity('AAPL')。这样就可以了。如果我想做一个交易数据的图表,我可以简单地使用AAPL.stock_hist中的值,这给了我一个数据框架来工作。
现在,对于每只股票,我也希望能够根据计算结果创建曲线。
所以,我创建了另一个类Curve,在这里我传递了一个StockEntity对象作为属性,我的想法是,虽然我需要类Curve的对象为'AAPL'本身是一个(实例)对象,但使用AAPL对象中的相同数据是有意义的。
然而,当我这样做时
AAPL = StockEntity('AAPL')
进而
AAPL_curve = Curve(AAPL, '2020-01-01', 'S', 1) 我得到一个错误信息 "AttributeError: type object 'Stock_entity' has no attribute 'ticker'"。
咦?
如果我输入'AAPL.ticker',它就会按照预期返回'AAPL'!所以毫无疑问,属性是存在的。所以毫无疑问,这个属性是存在的。
我错过了什么?我做错了吗?
class Curve():
def __init__(self, stock, startdate, type_of_curve, hierarchy_order):
self.ticker = stock.ticker
self.startdate = startdate
self.type_of_curve = type_of_curve
self.hierarchy_order = hierarchy_order
self.stock_hist = stock.stock_hist
试着把股票实体作为一个属性来传递,也许?