python - 将另一个类导入类python
问题描述
我希望能够将 A 类导入 B 类并使用 B 类中存在的函数。如下所示:
from scipy import stats
import numpy as np
class TestLearner(object):
def __init__(self, param1 = 2):
self.param = param1
def train_model(self, X, y):
slope, intercept, r_value, p_value, std_err = stats.linregress(X,y)
self.slope = slope
self.intercept = intercept
def predict_new(self, X):
y = self.intercept + self.slope * X
return y
class Test(object):
def __init__(self, learner):
self.learner = learner
def add_evidence(self, X, y):
learner = self.learner
slope, intercept = learner.train_model(X,y)
self.slope = slope
self.intercept = intercept
def predict(self, X):
y= self.intercept * self.slope * X
return y
将 TestLearner 导入为 t
x_train = np.random.randn(10,3)
y_train = np.random.randn(10,)
x_test = np.random.randn(5,3)
testing = Test(learner = t.TestLearner)
testing.add_evidence(X=x_train,y= y_train)
我收到以下错误:
Traceback (most recent call last):
File "<input>", line 40, in <module>
File "<input>", line 26, in add_evidence
TypeError: train_model() missing 1 required positional argument: 'y'
我不明白。似乎火车模型正在寻找“自我”作为输入,我认为它是自包含在 TestLearner 类中的?
解决方案
为了在类中调用方法,您需要将该类初始化为一个实例,您可以在 Test 构造函数中初始化您的实例,但这仅在您将另一个类而不是实例传递给 Test() 时才有效
class Test(object):
def __init__(self, learner):
self.learner = learner()
def add_evidence(self, X, y):
learner = self.learner
slope, intercept = learner.train_model(X,y)
self.slope = slope
self.intercept = intercept
def predict(self, X):
y= self.intercept * self.slope * X
return y
推荐阅读
- python - 为什么我不能在课堂外使用 __repr__ 数据
- c# - 如何在datagridview中检查单击单元格的列名
- c# - 为什么我的 C# WinForms 窗口没有响应 Enter 键而关闭?
- java - 查找多个输入数组的总和
- java - 如何在其他配置中重用 Maven 配置 XML 片段
- python - asyncio 方法不异步执行
- sql - 通过 API 进行数据库同步 - Postgresql
- javascript - Magento 2.4.1:未捕获的错误:Object 处的 [object Object]。
(default.js:847) - angular - 在同一个组件中使用 2 个发射器是不可能的
- sql-server - 如何在不使用函数的情况下使用 MS SQL 查询查找在文本中定义的硬编码值