Поліморфізм в Python з ПРИКЛАДАМИ

Що таке поліморфізм?

Поліморфізм можна визначити як стан, який зустрічається в багатьох різних формах. Це концепція в Python програмування, де об’єкт, визначений у Python можна використовувати різними способами. Це дозволяє програмісту визначати кілька методів у похідному класі, і він має те саме ім’я, що й у батьківського класу. Такі сценарії підтримують перевантаження методів у Python.

Поліморфізм в Operaторс

Оператор в Python допомагає виконувати математичні та деякі інші завдання програмування. Наприклад, оператор «+» допомагає виконувати додавання між двома типами цілих чисел Python, і таким же чином той самий оператор допомагає в конкатенації рядків Python програмування.

Візьмемо приклад + (плюс) оператор в Python щоб відобразити застосування поліморфізму в Python як показано нижче:

Python код:

p = 55
q = 77
r = 9.5
g1 = "Guru"
g2 = "99!"
print("the sum of two numbers",p + q)
print("the data type of result is",type(p + q))
print("The sum of two numbers",q + r)
print("the data type of result is", type (q + r))
print("The concatenated string is", g1 + g2)
print("The data type of two strings",type(g1 + g2))

вихід:

the sum of two numbers 132
the data type of result is <class 'int'>

The sum of the two numbers 86.5
the data type of result is <class 'float'>

The concatenated string is Guru99!
The data type of two strings <class 'str'>

Наведений вище приклад також можна розглядати як приклад перевантаження оператора.

Поліморфізм у визначених користувачем методах

Визначений користувачем метод у Python Мова програмування — це методи, які створює користувач і оголошує їх за допомогою ключового слова def із назвою функції.

Поліморфізм в Python Мова програмування досягається шляхом перевантаження та перевизначення методів. Python визначає методи з ключовим словом def і з однаковою назвою в дочірньому та батьківському класах.

Розглянемо такий приклад, як показано нижче: –

Python код:

from math
import pi
class square:
    def __init__(self, length):
    self.l = length
def perimeter(self):
    return 4 * (self.l)
def area(self):
    return self.l * self.l
class Circle:
    def __init__(self, radius):
    self.r = radius
def perimeter(self):
    return 2 * pi * self.r
def area(self):
    return pi * self.r * * 2
# Initialize the classes
sqr = square(10)
c1 = Circle(4)
print("Perimeter computed for square: ", sqr.perimeter())
print("Area computed for square: ", sqr.area())
print("Perimeter computed for Circle: ", c1.perimeter())
print("Area computed for Circle: ", c1.area())

вихід:

Perimeter computed for square:  40
Area computed for square:  100
Perimeter computed for Circle:  25.132741228718345
Area computed for Circle:  50.26548245743669

У наведеному вище коді є два визначені користувачем методи, периметр і площа, визначені в класах круга та квадрата.

Як показано вище, і клас круга, і клас квадрата викликають те саме ім’я методу, що відображає характеристику поліморфізму для надання необхідного результату.

Поліморфізм у функціях

Вбудовані функції в Python розроблені та зроблені сумісними для виконання кількох типів даних. в Python, Len() є однією з ключових вбудованих функцій.

Він працює з кількома типами даних: список, кортеж, рядок і словник. Функція Len () повертає певну інформацію, узгоджену з цими багатьма типами даних.

На наступному малюнку показано, як можна застосувати поліморфізм Python по відношенню до вбудованих функцій: –

Поліморфізм у функціях

Наступна програма допомагає проілюструвати застосування поліморфізму в Python: -

Python код:

print ("The length of string Guru99 is ",len("Guru99"))
print("The length of list is ",len(["Guru99","Example","Reader"]))
print("The length of dictionary is ",len({"Website name":"Guru99","Type":"Education"}))

вихід:

The length of string Guru99 is 6
The length of the list is 3
The length of the dictionary is 2

Поліморфізм у функціях

У наведеному вище прикладі функція Len (). Python виконує поліморфізм для типів даних рядка, списку та словника відповідно.

Поліморфізм і успадкування

Спадщина в Python можна визначити як концепцію програмування, в якій визначений дочірній клас успадковує властивості від іншого базового класу, наявного в Python.

Є два ключі Python поняття, що називаються перевизначенням методу та перевантаженням методу.

  • У методі перевантаження, Python надає функцію створення методів, які мають однакові назви для виконання або виконання різних функцій у певній частині коду. Це дозволяє перевантажувати методи та використовувати їх для виконання різних завдань у більш простих термінах.
  • У перевизначенні методу Python замінює значення, яке має однакове ім’я в батьківському та дочірньому класах.

Розглянемо наступний приклад поліморфізму та успадкування, як показано нижче: –

Python код:

class baseclass:
    def __init__(self, name):
    self.name = name
def area1(self):
    pass
def __str__(self):
    return self.name
class rectangle(baseclass):
    def __init__(self, length, breadth):
    super().__init__("rectangle")
self.length = length
self.breadth = breadth
def area1(self):
    return self.length * self.breadth
class triangle(baseclass):
    def __init__(self, height, base):
    super().__init__("triangle")
self.height = height
self.base = base
def area1(self):
    return (self.base * self.height) / 2
a = rectangle(90, 80)
b = triangle(77, 64)
print("The shape is: ", b)
print("The area of shape is", b.area1())
print("The shape is:", a)
print("The area of shape is", a.area1())

вихід:

The shape is: a triangle
The area of a shape is 2464.0

The shape is: a rectangle
The area of a shape is 7200

У наведеному вище коді методи мають однакові назви, визначені як метод init і метод area1. Потім об’єкти класу square і rectangle використовуються для виклику двох методів для виконання різних завдань і надання виведення площі квадрата та прямокутника.

Поліморфізм з методами класу

Команда Python програмування дозволяє програмістам досягти поліморфізму та перевантаження методів методами класу. Різні класи в Python можуть мати методи, оголошені в одному імені в усіх Python Код.

In Python, можна визначити два різні класи. Один буде дочірнім класом, і він отримує атрибути з іншого визначеного класу, який називається батьківським класом.

Наступний приклад ілюструє концепцію поліморфізму з методами класу: –

Python код:

class amazon:
    def __init__(self, name, price):
    self.name = name
self.price = price
def info(self):
    print("This is product and am class is invoked. The name is {self.name}. This costs {self.price} rupees.")
class flipkart:
    def __init__(self, name, price):
    self.name = name
self.price = price
def info(self):
    print(f "This is product and fli class is invoked. The name is {self.name}. This costs {self.price} rupees.")
FLP = flipkart("Iphone", 2.5)
AMZ = amazon("Iphone", 4)
for product1 in (FLP, AMZ):
    product1.info()

вихід:

This is a product, and fli class is invoked. The name is iPhone, and this costs 2.5 rupees.
This is a product, and am class is invoked. The name is iPhone, and this costs 4 rupees.

У наведеному вище коді два різних класи з іменами flipkart і amazon використовують однакові імена методів info та init для надання відповідних котирувань цін на продукт і подальшої ілюстрації концепції поліморфізму в Python.

Різниця між перевантаженням методу та поліморфізмом під час компіляції

У поліморфізмі під час компіляції компілятор Python програма вирішує виклик. Поліморфізм під час компіляції досягається через перевантаження методів.

Команда Python компілятор не розпізнає виклики поліморфізму під час виконання. Він також класифікується як перевизначення методів, коли ті самі методи мають подібні підписи або властивості, але вони є частиною різних класів.

Підсумки

  • Поліморфізм можна визначити як стан, який зустрічається в багатьох різних формах.
  • Оператор в Python допомагає виконувати математичні та деякі інші завдання програмування.
  • Визначений користувачем метод у Python Мова програмування — це методи, які створює користувач і оголошує їх за допомогою ключового слова def із назвою функції.
  • Поліморфізм в Python пропонує кілька бажаних якостей, наприклад, сприяє повторному використанню кодів, написаних для різних класів і методів.
  • Дочірній клас є похідним класом, і він отримує свої атрибути від батьківського класу.
  • Поліморфізм також досягається через перевизначення методу під час виконання та перевантаження методу під час компіляції.
  • Поліморфізм в Python також досягається за допомогою перевантаження операторів і методів класу.