【发布时间】:2017-05-29 15:02:43
【问题描述】:
我有两个类,一个继承自另一个。我们称他们为Parent 和Child。
从这些类创建的两个对象都应该使用函数funA,如下所示
funA():
X = another_function()
Y = # some value
X.append(Y)
# do other computations
对于这两个类,函数funA 看起来几乎相同,除了函数another_function(),它以不同的方式计算Parent 的列表X 和不同的Child。当然,我知道我可以在 Child 类中重写函数funA,但是由于这个函数很长,并且会进行多次操作,因此复制粘贴它会有点浪费。另一方面 - 我必须区分父类应该使用another_function() 的一个版本,而子类应该使用another_function() 的第二个版本。是否有可能指出每个类应该使用哪个版本的another_function(我们称它们为another_function_v1和another_function_v2),或者如果覆盖整个函数funA是唯一的解决方案?
【问题讨论】:
-
为什么不将
another_function的调用替换为function_calling_method的调用,然后在子级中覆盖that? -
您的
funA是静态方法还是类/实例方法? -
@AzatIbrakov 这是一个类方法
-
@jonrsharpe 你能更准确地解释一下你的意思吗?
-
那么
X = cls.another_function()有什么问题呢?
标签: python class inheritance overriding