Podczas tworzenia prostej hierarchii obiektów w Pythonie chciałbym móc wywoływać metody klasy nadrzędnej z klasy pochodnej. W Perlu i Javie istnieje słowo kluczowe dla tego ( super
). W Perlu mogę to zrobić:
package Foo;
sub frotz {
return "Bamf";
}
package Bar;
@ISA = qw(Foo);
sub frotz {
my $str = SUPER::frotz();
return uc($str);
}
W Pythonie wydaje się, że muszę wyraźnie nazwać klasę nadrzędną od dziecka. W powyższym przykładzie musiałbym zrobić coś takiego Foo::frotz()
.
Nie wydaje się to właściwe, ponieważ takie zachowanie utrudnia tworzenie głębokich hierarchii. Jeśli dzieci muszą wiedzieć, która klasa zdefiniowała odziedziczoną metodę, powstają różnego rodzaju bóle informacyjne.
Czy to rzeczywiste ograniczenie w pythonie, luka w moim rozumieniu, czy jedno i drugie?