Πολυμορφισμός στην Python (με παραδείγματα)

Σε αυτό το σεμινάριο, θα μάθουμε για τον πολυμορφισμό, τους διαφορετικούς τύπους πολυμορφισμού και πώς μπορούμε να τους εφαρμόσουμε στο Python με τη βοήθεια παραδειγμάτων.

Τι είναι ο πολυμορφισμός;

Η κυριολεκτική έννοια του πολυμορφισμού είναι η κατάσταση της εμφάνισης σε διάφορες μορφές.

Ο πολυμορφισμός είναι μια πολύ σημαντική έννοια στον προγραμματισμό. Αναφέρεται στη χρήση μιας οντότητας ενός τύπου (μέθοδος, χειριστής ή αντικείμενο) για την αναπαράσταση διαφορετικών τύπων σε διαφορετικά σενάρια.

Ας πάρουμε ένα παράδειγμα:

Παράδειγμα 1: Πολυμορφισμός επιπλέον τελεστής

Γνωρίζουμε ότι ο +χειριστής χρησιμοποιείται εκτενώς σε προγράμματα Python. Όμως, δεν έχει μία χρήση.

Για ακέραιους τύπους δεδομένων, ο +τελεστής χρησιμοποιείται για την εκτέλεση αριθμητικής λειτουργίας προσθήκης.

 num1 = 1 num2 = 2 print(num1+num2) 

Ως εκ τούτου, το παραπάνω πρόγραμμα εξάγει 3.

Ομοίως, για τύπους δεδομένων συμβολοσειράς, ο +τελεστής χρησιμοποιείται για την εκτέλεση συνένωσης.

 str1 = "Python" str2 = "Programming" print(str1+" "+str2) 

Ως αποτέλεσμα, το παραπάνω πρόγραμμα εξάγει τον προγραμματισμό Python.

Εδώ, μπορούμε να δούμε ότι ένας μεμονωμένος χειριστής +έχει χρησιμοποιηθεί για την εκτέλεση διαφορετικών λειτουργιών για διαφορετικούς τύπους δεδομένων. Αυτό είναι ένα από τα πιο απλά περιστατικά πολυμορφισμού στο Python.

Λειτουργία Πολυμορφισμός στο Python

Υπάρχουν ορισμένες λειτουργίες στο Python που είναι συμβατές για εκτέλεση με πολλούς τύπους δεδομένων.

Μια τέτοια λειτουργία είναι η len()συνάρτηση. Μπορεί να εκτελεστεί με πολλούς τύπους δεδομένων στο Python. Ας δούμε μερικά παραδείγματα περιπτώσεων χρήσης της συνάρτησης.

Παράδειγμα 2: Συνάρτηση πολυμορφικού len ()

 print(len("Programiz")) print(len(("Python", "Java", "C"))) print(len(("Name": "John", "Address": "Nepal"))) 

Παραγωγή

 9 3 2 

Εδώ, μπορούμε να δούμε ότι πολλοί τύποι δεδομένων όπως συμβολοσειρά, λίστα, πλειάδα, σύνολο και λεξικό μπορούν να λειτουργήσουν με τη len()λειτουργία. Ωστόσο, μπορούμε να δούμε ότι επιστρέφει συγκεκριμένες πληροφορίες σχετικά με συγκεκριμένους τύπους δεδομένων.

Ο πολυμορφισμός στο len () λειτουργεί στο Python

Κατηγορία Πολυμορφισμός στην Python

Ο πολυμορφισμός είναι μια πολύ σημαντική ιδέα στον Προγραμματισμό με Αντικειμενοστρεφή.

Για να μάθετε περισσότερα σχετικά με το OOP στο Python, επισκεφθείτε: Προγραμματισμός αντικειμενοστρεφούς Python

Μπορούμε να χρησιμοποιήσουμε την έννοια του πολυμορφισμού δημιουργώντας μεθόδους κατηγορίας καθώς η Python επιτρέπει σε διαφορετικές τάξεις να έχουν μεθόδους με το ίδιο όνομα.

Στη συνέχεια, μπορούμε να γενικεύσουμε την κλήση αυτών των μεθόδων αγνοώντας το αντικείμενο με το οποίο εργαζόμαστε. Ας δούμε ένα παράδειγμα:

Παράδειγμα 3: Πολυμορφισμός σε μεθόδους τάξης

 class Cat: def __init__(self, name, age): self.name = name self.age = age def info(self): print(f"I am a cat. My name is (self.name). I am (self.age) years old.") def make_sound(self): print("Meow") class Dog: def __init__(self, name, age): self.name = name self.age = age def info(self): print(f"I am a dog. My name is (self.name). I am (self.age) years old.") def make_sound(self): print("Bark") cat1 = Cat("Kitty", 2.5) dog1 = Dog("Fluffy", 4) for animal in (cat1, dog1): animal.make_sound() animal.info() animal.make_sound() 

Παραγωγή

Είμαι γάτα. Το όνομά μου είναι Kitty. Είμαι 2,5 ετών. Meow Bark Είμαι σκύλος. Το όνομά μου είναι Fluffy. Είμαι 4 χρονών. Φλοιός

Εδώ, δημιουργήσαμε δύο τάξεις Catκαι Dog. Μοιράζονται μια παρόμοια δομή και έχουν τα ίδια ονόματα μεθόδων info()και make_sound().

Ωστόσο, παρατηρήστε ότι δεν έχουμε δημιουργήσει ένα κοινό superclass ούτε συνδέσαμε τις τάξεις μαζί με οποιονδήποτε τρόπο. Ακόμα και τότε, μπορούμε να συσκευάσουμε αυτά τα δύο διαφορετικά αντικείμενα σε μια πλειάδα και να το επαναλάβουμε χρησιμοποιώντας μια κοινή μεταβλητή ζώου. Είναι δυνατό λόγω του πολυμορφισμού.

Πολυμορφισμός και κληρονομικότητα

Όπως και σε άλλες γλώσσες προγραμματισμού, τα παιδικά μαθήματα στην Python κληρονομούν επίσης μεθόδους και χαρακτηριστικά από τη μητρική τάξη. Μπορούμε να επαναπροσδιορίσει ορισμένες μεθόδους και τις ιδιότητες ειδικά για να χωρέσει την τάξη του παιδιού, η οποία είναι γνωστή ως μέθοδος των επιτακτικών .

Ο πολυμορφισμός μας επιτρέπει να αποκτήσουμε πρόσβαση σε αυτές τις παρακάμψεις μεθόδους και χαρακτηριστικά που έχουν το ίδιο όνομα με τη γονική τάξη.

Ας δούμε ένα παράδειγμα:

Παράδειγμα 4: Παράκαμψη μεθόδου

 from math import pi class Shape: def __init__(self, name): self.name = name def area(self): pass def fact(self): return "I am a two-dimensional shape." def __str__(self): return self.name class Square(Shape): def __init__(self, length): super().__init__("Square") self.length = length def area(self): return self.length**2 def fact(self): return "Squares have each angle equal to 90 degrees." class Circle(Shape): def __init__(self, radius): super().__init__("Circle") self.radius = radius def area(self): return pi*self.radius**2 a = Square(4) b = Circle(7) print(b) print(b.fact()) print(a.fact()) print(b.area()) 

Παραγωγή

Κύκλος Είμαι ένα δισδιάστατο σχήμα. Τα τετράγωνα έχουν κάθε γωνία ίση με 90 μοίρες. 153.93804002589985

Εδώ, μπορούμε να δούμε ότι οι μέθοδοι όπως __str__(), οι οποίες δεν έχουν παρακαμφθεί στις παιδικές τάξεις, χρησιμοποιούνται από τη μητρική τάξη.

Λόγω του πολυμορφισμού, ο διερμηνέας Python αναγνωρίζει αυτόματα ότι η fact()μέθοδος για αντικείμενο a(τετράγωνη κλάση) παρακάμπτεται. Έτσι, χρησιμοποιεί αυτό που ορίζεται στην παιδική τάξη.

Από την άλλη πλευρά, επειδή η fact()μέθοδος για το αντικείμενο b δεν παρακάμπτεται, χρησιμοποιείται από την κλάση Parent Shape.

Ο πολυμορφισμός στις τάξεις γονέων και παιδιών στην Python

Σημείωση : Η μέθοδος υπερφόρτωσης , ένας τρόπος δημιουργίας πολλαπλών μεθόδων με το ίδιο όνομα αλλά με διαφορετικά ορίσματα, δεν είναι δυνατός στο Python.

ενδιαφέροντα άρθρα...