我想创建一个只有一个实例的服务类,所以我应该将该类设为单例,还是应该将这些方法设为classmethods?
class PromoService():
@classmethod
def create_promo(cls, promotion):
#do stuff
return promo
class DiscountPromoService(PromoService):
@classmethod
def create_promo(cls, promo, discount):
promo = super(DiscountPromoService, cls).create_promo(promo)
promo.discount = discount
promo.save()
return promo
我不想将其创建为模块的原因是因为我需要将我的服务子类化。什么是最pythonic方式,上述方法或单独一类?
答案 0 :(得分:1)
如果你想要一个单身人士,请选择一个单身人士。引用here的模式效果很好。您只需要执行以下操作:
class PromoService():
_metaclass__ = Singleton
答案 1 :(得分:0)
简短的回答:在我看来它会起作用。
但,在纯粹的模式意义上,我一直在努力解决这个问题:
python类方法和类属性本质上是否像Singleton一样?
是的,纯粹的单一模式比较会失败简单而简单,但肯定不是很远吗?
不会称自己为蟒蛇专家,很高兴知道对此的看法会在我的假设中得到纠正。