Полиморфизъм в 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. След това обектът на клас квадрат и правоъгълник се използват за извикване на двата метода за изпълнение на различни задачи и предоставяне на изхода на площта на квадрат и правоъгълник.

Полиморфизъм с методите на класа

- 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 компилаторът не разрешава извикванията по време на изпълнение за полиморфизъм. Той също така се класифицира като заместващ метод, при който едни и същи методи носят подобни сигнатури или свойства, но те са част от различни класове.

Oбобщение

  • Полиморфизмът може да се определи като състояние, което се среща в много различни форми.
  • Оператор в Python помага при изпълнението на математически и няколко други програмни задачи.
  • Дефиниран от потребителя метод в Python език за програмиране са методи, които потребителят създава и се декларира с помощта на ключовата дума def с името на функцията.
  • Полиморфизъм в Python предлага няколко желани качества, като например насърчава повторното използване на кодове, написани за различни класове и методи.
  • Дъщерен клас е производен клас и получава своите атрибути от родителския клас.
  • Полиморфизмът се постига и чрез отмяна на метода по време на изпълнение и претоварване на метода по време на компилиране.
  • Полиморфизъм в Python също се постига чрез претоварване на оператори и методи на клас.