Полиморфизм в Python с ПРИМЕРАМИ
Что такое полиморфизм?
Полиморфизм можно определить как состояние, которое проявляется во многих различных формах. Это концепция в Python программирование, в котором объект, определенный в Python можно использовать по-разному. Он позволяет программисту определять несколько методов в производном классе и имеет то же имя, что и родительский класс. Такие сценарии поддерживают перегрузку методов в Python.
Полиморфизм в OperaTORs
Оператор в 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 и Прямоугольник затем используется для вызова двух методов для выполнения различных задач и предоставления вывода площади квадрата и прямоугольника.
Полиморфизм с методами класса
Команда 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 также достигается посредством перегрузки операторов и методов класса.