将另一个类导入python类
我希望能够将类A导入到类B中,并使用类B中的函数。如下所示:将另一个类导入python类,python,class,Python,Class,我希望能够将类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_e
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'
回溯(最近一次呼叫最后一次):
文件“”,第40行,在
文件“”,第26行,添加证据
TypeError:train_model()缺少1个必需的位置参数:“y”
我不明白。似乎train模型正在寻找“self”作为输入,我认为它包含在TestLearner类中?为了调用类中的方法,您需要将该类初始化为实例,您可以在测试构造函数中初始化您的实例,但这只有在通过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
尝试使learner=TestLearner to learner=TestLearner()您需要传递类的一个实例
TestLearner
目标是在测试类中有一群具有相同API的不同学习者。例如,如果我想将TestLearner2类导入到Test中,那么如果Testlearner不在同一个文件中,就可以使用learner=Test(learner=TestLearner2)。例如,如果我想将TestLearner作为t导入,然后使用像learner=Test(learner=t.TestLearner)这样的测试,这会起作用吗?