【发布时间】:2022-01-06 17:29:24
【问题描述】:
我是一名学生,刚接触 Python。我有以下代码:
class A:
...
def fit(self, X, y):
...
return self
def transform(self, X):
...
return transformed_X
def fit_transform(self, X, y):
return self.fit(X, y).transform(X)
class B(A):
...
def fit(self, X, y):
transformed_X = super().fit_transform(X, y)
...
我认为这会导致无限循环(B 在A 中调用fit_transform,然后在B 中再次调用fit 等等)。它是否正确?我该如何解决这个问题?我希望 B 中的调用 super().fit_transform(X, y) 返回如果对象只是 A 类型时的结果。
谢谢。
【问题讨论】:
-
fit 转换在您的示例中仅采用
X参数。您能否澄清一下您希望B.fit的输出是什么(即与A.fit相同或与A.fit_transform相同) -
@AntoineRedier 抱歉,
A.fit_transform也应该使用y。我已经编辑了我的问题。我希望B.fit中的transformed_X成为A.fit_transform返回的内容。 -
return A.fit(self, X, y).transform(X)当然可以,但这在我看来是个有缺陷的设计。
标签: python oop subclass superclass