Die Funktion super() in Python 3.2

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
albertus
User
Beiträge: 52
Registriert: Mittwoch 7. Juli 2010, 14:48

Guten Morgen,

ich mache es mal kurz

Code: Alles auswählen

class F:
  def foo(self, a):
    return "Klasse F: Argument %s" % a

class G(F):
  def foo(self, a):
    return "Klasse G: " + super().foo(a)

class H(G):
  def foo(self,a):
    return "Klasse H: " + super().foo(a)
Ausgabe: 'Klasse H: Klasse G: Klasse F: Argument 1'

Das ist ja auch das, was man zumeist haben möchte. Ich stehe jetzt aber vor dem Problem das ich, bei Beibehaltung der Vererbungshierarchie, direkt foo() der Basisklasse F aufrufen muss.

Die Ausgabe sollte also sein: 'Klasse H: Klasse F: Argument 1'

Geht so was mit super() ? :K

Direkt von F zu erben geht nicht den G den sie enthält andere Methoden die F nicht enthält.
return
Mit freundlichen Grüßen

Albertus
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Nein das geht mit `super` nicht, aber du kannst `F.foo` direkt aufrufen.
albertus
User
Beiträge: 52
Registriert: Mittwoch 7. Juli 2010, 14:48

Hallo cofi,

schade, schade das das nicht geht. Dann mach ich das eben nach der alt hergebrachten Methode.

Danke noch mal.
Mit freundlichen Grüßen

Albertus
Antworten