Ausführen von Allgemeinen post-Initialisierung Aufgaben-in vererbten Klassen?

Die Initialisierung einer Gruppe von Klassen, die einen gemeinsamen Elternteil kann in drei Teile unterteilt werden:

  • Gemeinsame Initialisierung
  • Unterklasse-spezifische Initialisierung
  • Gemeinsamen post-Initialisierung

Derzeit die ersten beiden Teile aufgerufen werden, von der __init__ - Methode jedes untergeordneten Klasse, aber der Letzte post-initialization-Teil aufgerufen werden separat, zum Beispiel

class BaseClass:
    def __init__(self):
        print 'base __init__'
        self.common1()

    def common1(self):
        print 'common 1'

    def finalizeInitialization(self):
        print 'finalizeInitialization [common2]'


class Subclass1(BaseClass):
    def __init__(self):
        BaseClass.__init__(self)
        self.specific()

    def specific(self):
        print 'specific'


if __name__ == '__main__':
    s = Subclass1()  # Don't forget to finalize the initialization
    s.finalizeInitialization()  # now the object is fully initialized

Gibt es eine Möglichkeit, um nicht zu rufen finalizeInitialization()? Oder kann man den Anruf auf finalizeInitialization() in Subclass1's __init__ (wie in S. Lott Antwort). Das macht das Leben leichter, aber immer noch daran zu erinnern, um die komplette Initialisierung, dieses mal im inneren der "Konstruktor". So oder so gibt es keine Möglichkeit, zu erzwingen, full initialization, das ist, was ich Suche.

Schreibe einen Kommentar