Python 3.x AttributeError:type object';CalculaVariaciones';没有属性';雷托诺斯"日报"&"x27;
我正在学习面向对象的作文。在我下面展示的脚本中,我试图应用组合而不是继承。我不太理解这个组成部分,以这个脚本为例,我想我可以更容易地完成它Python 3.x AttributeError:type object';CalculaVariaciones';没有属性';雷托诺斯"日报"&"x27;,python-3.x,jupyter-lab,Python 3.x,Jupyter Lab,我正在学习面向对象的作文。在我下面展示的脚本中,我试图应用组合而不是继承。我不太理解这个组成部分,以这个脚本为例,我想我可以更容易地完成它 import os import pandas as pd import datetime as dt import numpy as np import matplotlib.pyplot as plt class ImportaYahoo: def __init__(self): self.df_apple = pd.DataF
import os
import pandas as pd
import datetime as dt
import numpy as np
import matplotlib.pyplot as plt
class ImportaYahoo:
def __init__(self):
self.df_apple = pd.DataFrame({})
self.apple_close = pd.DataFrame({})
def importar_cotizaciones (self):
# Importar cotizaciones de Apple
import yfinance
name = 'AAPL'
ticker = yfinance.Ticker(name)
self.df_apple = ticker.history(interval="1d",start="2017-01-4",end="2021-04-10")
self.apple_close = self.df_apple[["Close"]]
class CalculaVariaciones:
def __init__(self, importar_yahoo):
self.df_yahoo = importar_yahoo
self.retornos_diarios = pd.DataFrame({})
self.log_retornos_diarios = pd.DataFrame({})
def calc_retornos_diarios(self):
# Porcentaje de variación diaria
self.retornos_diarios = self.df_yahoo.apple_close.pct_change()
self.retornos_diarios.fillna(0, inplace=True)
self.retornos_diarios.dropna(inplace = True)
def calc_log_retornos_diarios(self):
self.log_retornos_diarios = np.log(self.df_yahoo.retornos_diarios + 1)
class DibujaHistograma():
def __init__(self, CalculaVariaciones ):
self.variaciones = CalculaVariaciones
def mostrar_histograma (self):
# Plot the histogram
print("\n*******************************************************")
self.variaciones.retornos_diarios.hist(bins = 100, color='blue', figsize=(15, 8))
plt.ylabel('Frecuencia')
plt.xlabel('Retornos diarios')
plt.title('Histograma de los retornos diarios')
plt.show()
importar_yahoo = ImportaYahoo()
importar_yahoo.importar_cotizaciones()
calcula_variaciones = CalculaVariaciones (importar_yahoo)
calcula_variaciones.calc_retornos_diarios()
#calcula_variaciones.calc_log_retornos_diarios()
histograma = DibujaHistograma(CalculaVariaciones)
histograma.mostrar_histograma ()
它返回以下错误
AttributeError回溯(最近一次呼叫上次) 在里面 55 56组织图=组织图(结石) --->57 Historograma.mostrar_Historograma() 58 59 在mostrar_Historograma(自我) 41#绘制直方图 42打印(“\n****************************************************************************”) --->43 self.variaciones.retronos_diarios.hist(箱子=100,颜色='blue',尺寸=(15,8)) 44 plt.ylabel('Frecuencia') 45 plt.xlabel('Retronos diarios') AttributeError:类型对象“CalcularAvariaciones”没有属性“Retronos_diarios”
在这个例子中应用构图,我做错了什么?我将感谢您的帮助。这是因为在
DibujaHistograma
中,您传递的是类(CalculaVariaciones
),而不是它的对象(calcula\u variaciones
)。谢谢,我实际上传递的是类,而不是对象。正确的做法是。def _uinit _u;(self,calculate_variations):self.variations=calculate_variations经过此更正后,我得到错误“AttributeError:type object'Calculateralvariaciones'没有属性'retronos_diarios'”。你不知道为什么。不,我的意思是当你在做《组织图》的时候。它应该是histograma=DibujaHistograma(calcula_variaciones)
。看看这行不行。谢谢,现在它工作正常了。正如您所指出的,我的错误是我弄乱了类和对象的名称。