python singleton vs classmethod

时间:2017-01-24 19:09:29

标签: python singleton class-method

我想创建一个只有一个实例的服务类,所以我应该将该类设为单例,还是应该将这些方法设为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方式,上述方法或单独一类?

2 个答案:

答案 0 :(得分:1)

如果你想要一个单身人士,请选择一个单身人士。引用here的模式效果很好。您只需要执行以下操作:

class PromoService():
    _metaclass__ = Singleton

答案 1 :(得分:0)

简短的回答:在我看来它会起作用。

,在纯粹的模式意义上,我一直在努力解决这个问题:

  

python类方法和类属性本质上是否像Singleton一样?

  1. 该类的所有实例与它们无关
  2. 只有班级本身可以访问
  3. 总有一个
  4. 是的,纯粹的单一模式比较会失败简单而简单,但肯定不是很远吗?

    不会称自己为蟒蛇专家,很高兴知道对此的看法会在我的假设中得到纠正。