0

我正在我的电子商务网站中实现一些用于调整价格的类:每个类代表一个不同的定价调整策略,并且属于一个 AbstractBaseClass,它规定了两种方法: transform_pricetransform_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,..])
4

1 回答 1

0

事实证明,默认情况下启用此行为。

删除了我所有的transform_price_array方法实现,只留下抽象方法,我的所有测试仍然通过!

在此处输入图像描述

于 2021-07-05T14:49:16.083 回答