我有两个类,一个继承自另一个。我们称他们为Parent
和Child
。
从这些类创建的两个对象都应该使用函数funA
,如下所示
funA():
X = another_function()
Y = # some value
X.append(Y)
# do other computations
对于这两个类,函数funA
看起来几乎相同,除了函数another_function()
,它以不同的方式计算X
的列表Parent
,并且不同于Child
。当然,我知道我可以覆盖Child类中的函数funA
,但由于这个函数很长并且进行了多次操作,因此复制粘贴它会有点浪费。另一方面 - 我必须区分Parent类应该使用another_function()
的一个版本,而Child类应该使用another_function()
的第二个版本。是否可能指出哪个版本的another_function
(让我们称之为another_function_v1
和another_function_v2
)应该被每个类使用,或者唯一的解决方案是覆盖整个函数{{1} }?
答案 0 :(得分:1)
您的帖子不太清楚但我认为funA
是Parent
的方法。如果是,只需添加一些调用正确函数的another_method
方法:
class Parent(object):
def another_method(self):
return another_function_v1()
def funA(self):
X = self.another_method()
Y = # some value
X.append(Y)
# do other computations
class Child(Parent):
def another_method(self):
return another_method_v2()
如果funA
是一种类方法,你也希望another_method
成为一种类方法......
答案 1 :(得分:1)
我不知道你的另一个功能来自哪里。我认为它们是正常的函数,可以导入和使用
class Parent(object):
another_function = another_function_v1
def funA(self):
X = self.another_function()
Y = # some value
X.append(Y)
# do other computations
class Child(Parent):
another_function = another_function_v2