如何在Python中把一个对象的属性设置为另一个对象的属性值(另一个类)?

问题描述 投票:0回答:1

在这个项目中,我有两个类。

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'!所以毫无疑问,属性是存在的。所以毫无疑问,这个属性是存在的。

我错过了什么?我做错了吗?

python python-3.x object attributes instance
1个回答
0
投票
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

试着把股票实体作为一个属性来传递,也许?

© www.soinside.com 2019 - 2024. All rights reserved.