Ich habe eine Reihe von class
Objekte, die alle von einer Basisklasse erben. Einige von ihnen überschreiben eine Methode (save
) und machen Sachen. Für diesen speziellen Anwendungsfall möchte ich vorübergehend die Verwendung der Kind-save
-Methode (falls sie existiert) erzwingen, statt dessen die Verwendung der Eltern-Methode save
zu erzwingen.Aufruf einer übergeordneten Methode von außerhalb des Kindes
class BaseClass(object):
def save(self, *args, **kwargs):
print("Base Called")
class Foo(BaseClass):
def save(self, *args, **kwargs):
# do_stuff
print("Foo called")
return super(Foo, self).save(*args, **kwargs)
obj = Foo()
Wie kann ich nennen obj
Elternteil speichern von außerhalb des Kindes, so dass es „Basis Called“ druckt?
Was meinen Sie? Du meinst * nur * drucke "Base Called"? –
Grundsätzlich ignorieren Sie die Child-Save-Methode vollständig und nur die übergeordnete Methode – rh0dium
Sie können immer 'BaseClass.save (Obj)' tun. Oder verwenden Sie "Super", wenn Sie möchten, dass es allgemeiner ist. Obwohl das ** schreit ** "Ich sollte keine Vererbung verwenden" –