将另一个类导入python类

2024-05-28 18:49:55 发布

您现在位置: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类中是自我包含的


Tags: importselfaddmodeldefstatsnptrain
1条回答
网友
1楼 · 发布于 2024-05-28 18:49:55

为了在类中调用方法,您需要将该类初始化为实例,您可以在测试构造函数中初始化实例,但这仅在您将另一个类而不是实例传递到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

相关问题 更多 >

    热门问题