Rozdział 14 · Tworzenie rzeczywistych obiektów

Polimorfizm

Ten sam łańcuch znaków kodu — .zvuk() — zachowuje się inaczej w zależności od tego, który dokładnie obiekt go wywołał.

Jedno wezwanie, różne wyniki

Polimorfizm („wiele form”

polimorfizm.py
class Sobaka:
    def zvuk(self):
        return „Hau!”


class Koshka:
    def zvuk(self):
        return „Miau!”


class Korova:
    def zvuk(self):
        return „Muu!”


zhivotnye = [Sobaka(), Koshka(), Korova()]
for zh in zhivotnye:
    print(zh.zvuk())    # INNA wersja zvuk() jest wywoływana za każdym razem
zvuk()SobakaHau!"KoshkaMiau!KorovaMuu!
To samo wywołanie .zvuk() — różny rezultat dla każdej klasy
Pętla nie wie i nie powinna wiedzieć, z którą klasą pracuje
String zh.zvuk() wewnątrz pętli JEDEN — nie musi sprawdzać if isinstance(zh, Sobaka): ... jest taki sam dla każdej klasy. To jest wartość polimorfizmu: kod, który UŻYWA obiektów, pozostaje prosty i nie rośnie wraz z każdą nową klasą zwierząt.
Praktyka: polimorfizm
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →