如何建立一个扩展其__init__输入之一的类的类

时间:2019-07-08 23:04:06

标签: python python-3.x class inheritance

我已经针对一些机器学习模型(来自sklearn)编写了包装器类,但是我想直接公开底层模型的属性和方法以与其他代码兼容。

作为玩具示例...

class LogWrapper(BaseEstimator):

    def __init__(self, model):
        self.model = model

    def fit(self, X, y):
        y_log = np.log(y)
        self.model.fit(X, y_log)

    def predict(self, X):
        y_log_pred = self.model.predict(X)
        y_pred = np.exp(y_log_pred)
        return y_pred

# Then you can do 

my_model = LogWrapper(DecisionTreeRegressor(max_depth=4))

但是,我想访问model的方法而不必编写形式的代码

my_model.model.decision_path(X)

我更愿意写

my_model.decision_path(X)

所需行为类似于将LogWrapper类继承自model类,并传递给 init 而不是BaseEstimator。

0 个答案:

没有答案