2017-01-24 6 views
1

Ich möchte eine Serviceklasse erstellen, die nur eine Instanz hat, also sollte ich diese Klasse zu einem Singleton machen, oder sollte ich die Methoden als Klassenmethoden machen?python singleton vs classmethod

Der Grund, warum ich es nicht als Modul erstellen möchte, ist, weil ich meinen Dienst unterklassieren müsste. Was ist der pythischste Weg, dies zu tun, den oben genannten Weg oder eine Singleton-Klasse zu machen?

+0

soll "DiscountPromoService" das Formular "PromoService" erben? –

Antwort

0

Wenn Sie ein Singleton wollen, gehen Sie mit einem Singleton. Das Muster mit der Referenznummer here funktioniert gut. Sie müssten einfach so etwas tun:

class PromoService(): 
    _metaclass__ = Singleton 
0

Kurze Antwort: Meiner Meinung nach würde es funktionieren.

ABER, In reinem Sinne des Musters, ich habe eine Zeit lang mit dieser Frage gerungen:

Haben Methoden Python-Klasse und Klassenattribute wie ein Singleton im Wesentlichen verhalten?

  1. Alle Instanzen dieser Klasse haben keinen Einfluss auf sie
  2. Nur Klasse selbst Zugang zu ihnen haben
  3. Es gibt immer eine von ihnen ist

Ja, reinen Singleton Pattern Vergleich würde schlicht und einfach scheitern, aber sicherlich ist es nicht weit entfernt?

Würde mich nicht selbst ein Python-Experte nennen, so glücklich zu wissen, Ansichten zu diesem Thema auf meinen Annahmen korrigiert werden.

Verwandte Themen