Aufruf einer übergeordneten Klasse die Methode von der Kind-Klasse in Python?

Beim erstellen einer einfachen Objekt-Hierarchie in Python, ich möchte in der Lage zum aufrufen von Methoden von der übergeordneten Klasse, von der eine abgeleitete Klasse. In Perl und Java, es ist ein Schlüsselwort für diese (super). In Perl könnte ich dies tun:

package Foo;

sub frotz {
    return "Bamf";
}

package Bar;
@ISA = qw(Foo);

sub frotz {
   my $str = SUPER::frotz();
   return uc($str);
}

In python, scheint es, dass ich den Namen der Elternklasse explizit vom Kind.
In dem Beispiel oben, ich hätte etwas zu tun, wie Foo::frotz().

Dieser scheint nicht richtig, da dieses Verhalten macht es schwer, zu Tiefe Hierarchien. Wenn Kinder müssen wissen, welche Klasse definiert eine geerbte Methode, dann werden alle Arten von Informationen, die Schmerz erzeugt.

Ist dies eine tatsächliche Einschränkung in python, eine Lücke in meinem Verständnis oder beides?

Ich denke, die Benennung der übergeordneten Klasse ist nicht so eine schlechte Idee. Es kann helfen, wenn die Kind-Klasse erbt von mehr als einem Elternteil, da Sie explizit den Namen der übergeordneten Klasse.
Während Sie eine option, um den Namen einer Klasse ist keine schlechte Idee, gezwungen zu tun, so sicher ist.
Sich bewusst sein, der Veränderungen in der super-handling zwischen Python 2 und Python 3 https://www.python.org/dev/peps/pep-3135/. Die Benennung der Klasse ist nicht mehr erforderlich (obwohl vielleicht noch ein Gott Idee, zumindest manchmal).

InformationsquelleAutor jjohn | 2009-04-30

Schreibe einen Kommentar