Seite 1 von 1

Die Funktion super() in Python 3.2

Verfasst: Donnerstag 7. Februar 2013, 11:31
von albertus
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

Re: Die Funktion super() in Python 3.2

Verfasst: Donnerstag 7. Februar 2013, 11:48
von cofi
Nein das geht mit `super` nicht, aber du kannst `F.foo` direkt aufrufen.

Re: Die Funktion super() in Python 3.2

Verfasst: Donnerstag 7. Februar 2013, 12:48
von albertus
Hallo cofi,

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

Danke noch mal.