我有一个构造函数过于复杂的类,因此我想使用构建器模式来管理所有构造步骤。
这是应用程序的重要组成部分,取决于实例化类的旧方法,因此我不能一口气替换掉它们。我已经使用装饰器将某些方法标记为已弃用,但是如果要在builder类之外实例化该类,我想发出警告。
为了提供更多的上下文,原始类(Inverter
)的构造函数如下所示:
def __init__(self, inverter_id: str, location: Tuple[str, str], plant_id: str, customer_id: str, power_threshold: float = 0, resolution: int = 5, **kwargs): """ Creates a new inverter object. :param inverter_id: unique identifier of the inverter. """ # metrics initialization self._customer_id = customer_id self._plant_id = plant_id self._expected_power = DataFrame() self._generated_power = DataFrame() self._total_pr = 0.0 self._specific_performance = 0.0 self._active_pr = 0.0 self._generated_energy = 0.0 self._expected_energy = 0.0 self.__operational_time = {} self.__off_time = {} self.__savings = 0.0 # parameters initialization self._power_threshold = power_threshold self._resolution = 5 self._energy_rate = kwargs['energy_rate'] self._lines = [] # identification self._id = inverter_id self._location = location self._resolution = resolution # data storing self._inverter_electric_data = None self._inverter_environmental_data = None self._inverter_metadata = None
然后通过其他方法将许多参数提供给类,其想法是将这些值提供给构建器类,例如:
inverter = InverterBuilder().set_id("some_id").build()
我最初的想法是向构造函数添加弃用警告,但这也会使构建器也发出警告。
因此,当从构建器类的外部调用原始类的构造函数时,有没有办法引发警告?
例如,如果有人这样做,则发出警告:
inverter = Inverter(...)
作为附加说明,我正在使用
deprecation
库将方法标记为已弃用。
我有一个构造函数过于复杂的类,因此我想使用构建器模式来管理所有构造步骤。事物是应用程序的重要组成部分,取决于...
您的原始__init__
已经接受了**kwargs
参数-使用它。