我正在创建一个抽象基类,它的公共方法要求子类用特定的参数来实现抽象方法。除了写一个注解,我如何写抽象方法函数定义来指示子类应该在抽象方法本身中有特定的参数?
我编写这样一个抽象方法的原因是因为公共方法调用scipy.optimize.curve_fit,它将一个可调用对象作为参数,并且该可调用对象本身必须在其定义中具有某些参数。
下面是一些伪代码:
from abc import ABC, abstractmethod
from scipy.optimize import curve_fit
class DiseaseModel(ABC):
def fit(self, t, ydata):
return curve_fit(self._fit, t, ydata)
@abstractmethod
def _fit(self, t, modelParam1, modelParam2, ..., modelParamN):
"""Method fits parameters of a model to data.
This method MUST have `t` (which is just timesteps over which a
certain ydata occurred) AND any other parameters relevant for the
model of the system. Should I maybe just use `*args` or `**kwargs`
in the function definition?
For example, if a child class is for a simple
SIR epidemic model, then the function definition should be
`def _fit(self, t, beta, gamma)`.
Likewise, for a child class
defining a demographic SIR model, the function definition should be
`def _fit(self, t, beta, gamma, mu)`.
"""
pass
1条答案
按热度按时间deikduxw1#
嗯,你的问题并不十分清楚。
抽象方法是由开发人员根据自己的需要重写的。根据您需要与未来的开发人员交流的内容,我会推荐一些可能对您有帮助的东西。请记住,您只能做这么多,您应该考虑到开发人员也可以自己思考和解决某些问题。尽管如此,以下是我的建议:
fit
函数的其他非抽象函数,它们将引发类型错误,并在一定程度上强制fit函数的特定实现。同样,你能做的只有这么多来传达这一点;)