Polimorfizmus a Pythonban (példákkal)

Ebben az oktatóanyagban megismerhetjük a polimorfizmust, a polimorfizmus különböző típusait és azt, hogy miként valósíthatjuk meg azokat a Pythonban példák segítségével.

Mi a polimorfizmus?

A polimorfizmus szó szerinti jelentése a különböző formákban való előfordulás feltétele.

A polimorfizmus nagyon fontos fogalom a programozásban. Ez egyetlen típusú entitás (metódus, operátor vagy objektum) használatára utal, hogy különböző típusokat képviseljen különböző forgatókönyvekben.

Vegyünk egy példát:

1. példa: Polimorfizmus mellett operátor

Tudjuk, hogy az +operátort széles körben használják a Python programokban. De nincs egyetlen felhasználása.

Egész szám adattípusok esetén az +operátort számtani összeadási műveletek végrehajtására használják.

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

Ezért a fenti program kimeneti 3.

Hasonlóképpen, a string adattípusoknál az +operátort használják az összefűzés végrehajtására.

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

Ennek eredményeként a fenti program kimeneti Python programozást.

Itt láthatjuk, hogy egyetlen operátort +alkalmaztak különböző műveletek végrehajtására különböző adattípusok esetében. Ez a polimorfizmus egyik legegyszerűbb előfordulása a Pythonban.

Funkció polimorfizmus a Pythonban

A Pythonban vannak olyan funkciók, amelyek kompatibilisek több adattípussal történő futtatáshoz.

Az egyik ilyen funkció a len()függvény. Sok adattípussal futtatható a Pythonban. Nézzünk meg néhány példát a függvény használatára.

2. példa: Polimorf len () függvény

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

Kimenet

 9 3 2 

Itt láthatjuk, hogy sok adattípus, például karaktersorozat, lista, páros, készlet és szótár működhet a len()függvénnyel. Láthatjuk azonban, hogy konkrét információkat ad vissza az adott adattípusokról.

A len () függvény polimorfizmusa a Pythonban

Osztályú polimorfizmus a Pythonban

A polimorfizmus nagyon fontos fogalom az objektum-orientált programozásban.

Ha többet szeretne megtudni az OOP-ról a Pythonban, keresse fel a következő címet: Python Object-Oriented Programming

Használhatjuk a polimorfizmus fogalmát, miközben osztálymódszereket hozunk létre, mivel a Python lehetővé teszi, hogy a különböző osztályok azonos nevű módszerekkel rendelkezzenek.

Ezután később általánosíthatjuk ezeknek a módszereknek a hívását azáltal, hogy figyelmen kívül hagyjuk azt az objektumot, amelyikkel dolgozunk. Nézzünk meg egy példát:

3. példa: Polimorfizmus az osztálymódszerekben

 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() 

Kimenet

Miau macska vagyok. A nevem Kitty. 2,5 éves vagyok. Miau kéreg kutya vagyok. A nevem Bolyhos. 4 éves vagyok. Ugat

Itt két osztályt hoztunk létre Catés Dog. Hasonló felépítésűek és ugyanazok a módszernevek info()és make_sound().

Azonban vegye figyelembe, hogy nem hoztunk létre közös szuperosztályt, és semmilyen módon nem kapcsoltuk össze az osztályokat. Akkor is bepakolhatjuk ezt a két különböző tárgyat egy kettőbe, és iterálhatunk rajta egy közös állati változó segítségével. A polimorfizmus miatt lehetséges.

Polimorfizmus és öröklődés

Like in other programming languages, the child classes in Python also inherit methods and attributes from the parent class. We can redefine certain methods and attributes specifically to fit the child class, which is known as Method Overriding.

Polymorphism allows us to access these overridden methods and attributes that have the same name as the parent class.

Let's look at an example:

Example 4: Method Overriding

 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()) 

Output

 Circle I am a two-dimensional shape. Squares have each angle equal to 90 degrees. 153.93804002589985 

Here, we can see that the methods such as __str__(), which have not been overridden in the child classes, are used from the parent class.

A polimorfizmus miatt a Python tolmács automatikusan felismeri, hogy az fact()objektum a(négyzet osztály) metódusát felülírják. Tehát a gyermekosztályban definiáltat használja.

Másrészt, mivel a fact()b objektum metódusát nem írják felül, a Parent Shape osztályból használják.

Polimorfizmus a szülő és gyermek osztályokban a Pythonban

Megjegyzés : A módszer túlterhelése , több módszer létrehozása ugyanazzal a névvel, de különböző argumentumokkal, a Pythonban nem lehetséges.

érdekes cikkek...