SAMOUCZEK JĘZYKA PYTHON | ROZDZIAŁY |
Rozdział 8: Klasy
1: Terminologia- 2: Przestrzenie i zasięgi nazw w Pythonie- 3: Składnia definicji klasy - 4: Obiekty klasy 5: Obiekty konkretu klasy- 6: Obiekty metod- 7: Luźne uwagi - 8: Dziedziczenie- 9: Dziedziczenie wielorakie 10: Zmienne prywatne- 11: Sztuczki i chwyty - 12: Wjątki mogą być klasami Lekcja 9: Dziedziczenie wielorakieW Pythonie występuje ograniczona forma dziedziczenia wielorakiego. Poniżej podano przykład definicji klasy dziedziczącej z wielu klas podstawowych:
Aby wyjaśnić semantykę dziedziczenia wielorakiego w Pythonie, konieczne jest poznanie zasady znajdowania odniesień atrybutów klasy. Jest to zasada "najpierw w głąb, potem na prawo". Jeśli atrybut nie zostanie znaleziony w klasie NazwaKlasyPochodnej, zostanie poszukany w Bazowa1, a potem (rekurencyjnie) w klasach bazowych klasy Bazowa1 i jeśli tam nie zostanie znaleziony, poszukiwanie zostanie przeniesione do klasy Bazowa2.
Nieograniczone użycie dziedziczenia wielorakiego może w oczywisty sposób stać się koszmarem w procesie pielęgnacji oprogramowania, zwłaszcza że w Pythonie unikanie konfliktów nazw opiera się na umowie. Jednym ze bardziej znanych przykładów problemu z dziedziczeniem wielorakim jest sytuacja gdy dwie klasy bazowe dziedziczą z tej samej klasy - przodka. Nie wiadomo jak bardzo taka semantyka jest użyteczna w połączeniu z faktem, że mamy pojedynczą kopię "zmiennych konkretu" lub atrybutów danych wspólnej klasy bazowej. |
|