Python Polimorfizm
- 3898
- 1061
- Seweryn Augustyniak
Wstęp
Polimorfizm to kolejny ważny aspekt programowania obiektowego. Żadnych fanów Warcraft, nie ma to nic wspólnego z przekształcaniem ludzi w owce. To byłoby znacznie chłodniejsze. Zamiast tego polimorfizm pozwala metodom i funkcjom używać klas o podobnej funkcjonalności w ten sam sposób.
Polimorfizm ogranicza ilość kodu, który musisz napisać, eliminując redundancję w logiczny i znaczący sposób. Opiera się na tobie, programista, aby być sprytnym w twoim projekcie i uprzęży podobieństw w obiektach.
Co to jest polimorfizm?
Polimorfizm jest jedną z tych rzeczy, które trudno zdefiniować w jednym słowie lub frazie. Termin ten przyjmuje nieco inne formy w różnych językach programowania, co utrudnia zwięzłe przypięcie. Ogólnie rzecz biorąc, aw Python jest to zdolność wielu różnych obiektów pochodzących z różnych klas do użycia w ten sam sposób.
Aby użyć przykładu samochodów, z którymi pracował ten przewodnik, wyobraź sobie, że musisz napisać funkcję, która wywołuje pójść naprzód
Metoda każdego rodzaju samochodu, który został przekazany. Każdy obiekt utworzony z oryginalnej klasy „samochodowych” lub dowolnej podklasy, która go rozszerzyła pójść naprzód
Metoda, nawet jeśli została zastąpiona, aby zrobić coś nieco inaczej w niektórych podklasach. Oznacza to, że poprzez polimorfizm możesz napisać jedną funkcję, która przyjmuje obiekt „samochodu” i wywołuje pójść naprzód
. Ponieważ wszystkie obiekty utworzone z podklasy „samochodu” są nadal technicznie „samochodem” i mają wszystkie swoje oryginalne właściwości w takiej czy innej formie, to zadziała.
Należy pamiętać, że specyfikacja pojedynczej nadklasy do użycia jako typu obiektu nie jest całkowicie konieczna w Pythonie. Python nie jest silnie wpisany, więc nie musisz jawnie definiować, które typy zmienne podejmuje metoda lub funkcja. W językach takich jak Java odgrywa to rolę w zachowaniu polimorfizmu. Jednak w Python dobrym pomysłem jest pomyśleć o tym w tych wierszach, aby upewnić się, że obiekty, które wychodzisz.
Używanie go w Pythonie
Teraz naprawdę pomogłoby to zobaczyć to wszystko w akcji. To nie jest tak złożone, jak prawdopodobnie teraz myślisz. Najpierw upewnij się, że jesteś skonfigurowany z przykładowymi klasami. Jeśli jeszcze ich nie masz, są tuż poniżej.
Class Car (Object): def __init __ (self, make = 'ford', model = 'pinto', rok = '1971', przebieg = 253812, color = 'Orange'): self.__make = sam siebie.__model = model samego.__year = rok.__mileage = jaźń przebieg.__color = Color def set_make (self, make): self.__make = uczyń def get_make (self): powrót siebie.__make def set_model (self, model): self.__model = model def get_model (self): powrót siebie.__Model def set_year (ja, rok): jaźń.__year = rok def get_year (self): powrót siebie.__year def set_mileage (self, przebieg): jaźń.__mileage = przebieg def get_mileage (self): powrót siebie.__mileage def set_color (self, kolor): self.__color = kolor def get_color (self): powrót siebie.__color def Mov_Forward (Self, Speed): Drukuj („Twój %s idzie naprzód w %s” %(jaźń.__model, prędkość)) def Move_backward (self, prędkość): Drukuj („Cofnij się do wstecz w % s” % prędkość) klasa MuscleCar (CAR): def __init __ (self, make = 'ford', model = 'Mustang', rok = „1965”, przebieg = 54032, Color = „Blue”, HP = 325): super ().__init __ (make, model, rok, przebieg, kolor) jaźń.__HP = hp def set_hp (self, hp): self.__HP = hp def get_hp (self): powrót siebie.__HP def drag_race (self, przeciwnik): if (self.__HP> przeciwnik.get_hp ()): powrót „wygrywasz!„Else: powrót” przegrywasz!„def Trade_up (self, rok, kolor): super ().set_year (rok) super ().set_color (kolor) super ().set_mileage (0)
Po skonfigurowaniu klas demo możesz przetestować szybką funkcję, która wykorzystuje polimorfizm do wywołania pójść naprzód
.
newMuscLecar = musclecar () newCar = car () def go_25 (car_object): car_object.Move_forward („25 km / h) GO_25 (newCar) GO_25 (NewMuscLecar)
Oba wywołania funkcji zachowują się dokładnie tak samo, mimo że zostały one przekazane różne obiekty, które zostały utworzone z różnych klas. Dzięki polimorfizmowi nie musisz pisać dwóch różnych funkcji i możesz używać podobnych właściwości obiektów do pisania tylko jednej funkcji.
Spróbuj zastąpić jeden z pójść naprzód
Metoda w klasie „Musclecar”. Uruchom funkcję ponownie i zobacz, co się stanie.
klasa MuscleCar (samochód):… def Move_forward (Self, Speed): Drukuj („Twój niesamowity %s ryczy w dół drogi w %s” %(jaźń.__Model, prędkość))…
Kiedy funkcja wywołuje pójść naprzód
Metoda na obiekcie samochodów mięśniowych nadal działa idealnie, a zastosowana jest zastąpiona wersja metody.
Zamykanie myśli
Polimorfizm brzmi tak, jakby był to strasznie złożona koncepcja, ale jego nazwa jest nieco błędna producent. Sama koncepcja nie jest aż tak zastraszająca, a nawet pomaga uprościć ogólną strukturę kodu.
Wspólnym tematem programowania zorientowanego na obiekt jest eliminacja redundancji za pośrednictwem kodu wielokrotnego użytku i elastycznego. Polimorfizm jest ważną częścią tego obrazu.
Ćwiczenia
- Użyj przykładowych klas, aby ulepszyć obiekt „samochodowy” i obiekt „MUSCLECAR”.
- Utwórz funkcję, która może oddziaływać z dowolnym typem obiektu „samochodu”.
- Wywołaj swoją funkcję dwa razy, przekazując oba obiekty.
- Zastąp jedną z metod w klasie MuscleCar. Pamiętaj, aby nie zmieniać parametrów, które zaakceptuje drastycznie.
- Zadzwoń ponownie do swojej funkcji.
- Utwórz nową klasę, która dziedziczy po klasie „samochodu”.
- Utwórz nowy obiekt z nowo utworzonej klasy. Przekaż obiekt do swojej funkcji.
Powiązane samouczki Linux:
- Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
- Rzeczy do zainstalowania na Ubuntu 20.04
- Jak zbudować aplikację Tkinter za pomocą obiektu zorientowanego na…
- Jak napisać rozszerzenia Nautilus z Nautilus-Python
- Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
- Konfigurowanie ZFS na Ubuntu 20.04
- Mastering Bash Script Loops
- Jak pracować z WooCommerce Rest API z Pythonem
- Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
- EEPROM CH341A Programator - Odczyt i zapisz dane do układu na…
- « Jak zainstalować Veracrypt na Kali Linux
- Jak utworzyć menu wyboru za pomocą instrukcji Wybierz w Bash Shell »