【发布时间】:2021-09-16 08:22:55
【问题描述】:
我正在我的电子商务网站中实现一些用于调整价格的类:每个类代表一个不同的定价调整策略,并且属于一个 AbstractBaseClass,它规定了两种方法:
transform_price 和 transform_array。
class PricingModel(abc.ABC):
@abc.abstractmethod
def transform_price(self, price):
...
def transform_price_array(self, price_array):
return [self.transform_price(price) for price in price_array]
由于transform_array 只是transform_price 方法的列表理解(当然,这是特定于实现的),我希望有某种方法可以完全抽象此方法,使其仍然执行具体实现方法transform_price。
例如,我希望能够定义一个 PricingModel:
class PriceRatio(PricingModel):
def __init__(self, **kwargs):
...
def transform_price(self, price):
...
return new_price
# Note the abscence of a transform_price_array method!
虽然仍然可以访问抽象类中定义的 transform_price_array 方法:
_ = PriceRatio.transform_price_array([1,2,3,..])
【问题讨论】:
标签: python oop abstract-class abstract-base-class