Przykład 1: Polimorfizm z funkcjami i obiektami
Poniższy skrypt pokazuje użycie polimorfizmu między dwiema różnymi klasami. Do tworzenia obiektu tych klas używana jest funkcja. Wartość wymienionej zmiennej kolor jest inicjowany w __w tym__() Metoda obu 'Papuga„I”Struś„Zajęcia w czasie tworzenia obiektów. cechy() Metoda jest zdefiniowana w obu klasach, ale wyjście metody dla każdej klasy jest nieco inne. Create_object () Funkcja służy do utworzenia obiektu klasy. Ta funkcja jest wykonywana dwukrotnie w celu utworzenia obiektu w 'Papuga„klasa i w”Struś' klasa. Każdy wywoła metodę funkcji () obu klas i wydrukuje wyjście.
#!/usr/bin/env python3Wyjście
Poniższe dane wyjściowe pokazuje, że obiekt ''Papuga„klasa jest tworzona z”Zielony„Jak kolor wartość. Funkcja drukuje wyjście, wywołując cechy() metoda 'Papuga' klasa. Następnie obiekt ''Struś„klasa jest tworzona z”Czarny i biały„Jak kolor wartość. Funkcja drukuje wyjście, wywołując cechy() metoda 'Struś' klasa.
Przykład 2: Polimorfizm w niepowiązanych metodach klasowych
Podobnie jak w poprzednim przykładzie, następujący skrypt pokazuje użycie polimorfizmu w dwóch różnych klasach, ale do deklarowania obiektu nie stosuje się żadnej niestandardowej funkcji. __w tym__() Metoda obu 'Menedżer' I 'Urzędnik„Klasy zainicjują niezbędne zmienne. Polimorfizm jest tutaj zaimplementowany, tworząc post_details () I wynagrodzenie() Metody w obu klasach. Zawartość tych metod jest inna dla każdej z tych klas. Następnie zmienne obiektowe są tworzone dla obu klas i iterowane przez Do pętla. W każdej iteracji post_details () I wynagrodzenie() Metody są wywoływane w celu wydrukowania wyjścia.
#!/usr/bin/env python3Wyjście
Poniższe dane wyjściowe pokazuje, że obiekt ''Żłób„Klasa jest używana w pierwszej iteracji Do pętla i pensja menedżera są drukowane po obliczeniach. ObiektUrzędnik„Klasa jest używana w drugiej iteracji Do pętla i pensja urzędnika jest drukowana po obliczeniach.
Przykład 3: Polimorfizm w powiązanych metodach klasowych
Poniższy skrypt pokazuje użycie polimorfizmu między dwiema klasami dziecka. Tutaj oba 'Trójkąt' I 'Koło„Czy zajęcia dla dzieci klasy macierzystej nazwane”Kształt geometryczny.„Zgodnie z dziedzictwem klasa dziecięca może uzyskać dostęp do wszystkich zmiennych i metod klasy nadrzędnej. __w tym__() metoda 'Kształt geometryczny„Klasa jest używana w obu klasach dzieci do zainicjowania zmiennej nazwa za pomocą Super() metoda. Wartości baza I wysokość 'Trójkąt„Klasa zostanie zainicjowana w momencie tworzenia obiektów. W ten sam sposób wartości promienia ''Koło„Klasa zostanie zainicjowana w momencie tworzenia obiektów. Formuła obliczania obszaru trójkąta jest ½ × baza × wysokość, który jest zaimplementowany w obszar() metoda 'Trójkąt' klasa. Wzór obliczania obszaru koła jest 3.14 × (promień)2, który jest zaimplementowany w obszar() metoda 'Koło' klasa. Nazwy obu metod są takie same, ale cel jest inny. Następnie wartość ciągu zostanie pobrana od użytkownika w celu utworzenia obiektu i wywołania metody na podstawie wartości. Jeśli użytkownik wpisuje „trójkąt”, to obiekt ''Trójkąt' klasa zostanie utworzona, a jeśli użytkownik wpisuje się „okrążeniem”, to obiekt 'Koło' Klasa zostanie utworzona. Jeśli użytkownik wpisuje dowolny tekst bez „trójkąta” lub „okręgu”, nie zostanie utworzony żaden obiekt i zostanie wydrukowany komunikat o błędzie.
#!/usr/bin/env python3Wyjście
W następnym wyjściu skrypt jest wykonywany dwukrotnie. Pierwszy raz, trójkąt jest traktowany jako wejście, a obiekt jest inicjowany przez trzy wartości ”Trójkąt', baza, I wysokość. Wartości te są następnie wykorzystywane do obliczenia obszaru trójkąta, a wyjście zostanie wydrukowane. Drugi raz, koło jest traktowany jako dane wejściowe, a obiekt jest inicjowany przez dwie wartości ”Koło' I promień. Wartości te są następnie wykorzystywane do obliczenia obszaru koła, a wyjście zostanie wydrukowane.
Wniosek
W tym artykule wykorzystano łatwe przykłady, aby wyjaśnić trzy różne zastosowania polimorfizmu w Pythonie. Pojęcie polimorfizmu można również zastosować bez klas, metodę, której nie wyjaśniono tutaj. Ten artykuł pomógł czytelnikom dowiedzieć się więcej o tym, jak zastosować polimorfizm w programowaniu Pythona opartego na obiekcie.