[英]Python class call a method from a class object
在这种情况下如何修复属性错误? 我有一个 pandas 数据框,我在其中进行了一些数据切片和转换,并且我想绘制 persistence_model 函数的结果,如下所示。
编辑:我想自定义一个具有特定绘图标题、y 和 x 轴的函数,并根据 persitence_model 函数的结果在同一绘图上创建一条水平线。
class ResidualErrors():
def __init__(self, data: pd.Series):
self.data = data
def _persistence_forecast_model_nrows(self, test_rows):
slicer = test_rows + 1
errors = self.data[-slicer:].diff().dropna()
return errors
def _persistence_forecast_model_percrows(self, train_perc):
n = len(self.data)
ntrain = int(n * train_perc)
errors = self.data[ntrain:].diff().dropna()
return errors
def persistence_model(self, test_rows=None, train_perc=None):
if (not test_rows) and (not train_perc):
raise TypeError(r"Please provide 'test_rows' or 'train_perc' arguments.")
if test_rows and train_perc:
raise TypeError(r"Please choose one argument either 'test_rows' or 'train_perc'.")
if test_rows:
return self._persistence_forecast_model_nrows(test_rows)
else:
return self._persistence_forecast_model_percrows(train_perc)
@classmethod
def plot_residuals(obj):
obj.plot()
plt.show()
期望的输出
res = ResidualErrors(data).persistence_model(test_rows=10)
res.plot_residuals()
>> AttributeError: 'Series' object has no attribute 'plot_residuals'
您需要更加了解返回的方法。 第一步创建一个ResidualErrors
对象:
res = ResidualErrors(data)
第二步创建一个DataFrame
或Series
:
obj = res.persistence_model(test_rows=10)
您可以在res
上调用plot_residuals
但不能在obj
上调用,就像您目前正在做的那样:
res.plot_residuals(obj)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.