Как я могу установить атрибуты объекта на значение атрибута другого объекта (другого класса) в Python? - PullRequest
0 голосов
/ 16 июня 2020

В этом проекте у меня есть два класса:

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: объект типа" Stock_entity "не имеет атрибута' ticker '"

HUH?

Если я наберу «AAPL.ticker», он вернет «AAPL», как и ожидалось! Так что нет никаких сомнений в том, что атрибут есть.

Что мне здесь не хватает? Я все делаю неправильно?

1 Ответ

0 голосов
/ 16 июня 2020
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

Попробуйте просто передать объект акций в качестве атрибута?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...