Polimorfismo em Python com EXEMPLOS
โก Resumo Inteligente
Polimorfismo em Python Permite que uma รบnica interface funcione com objetos de diferentes tipos, de modo que o mesmo mรฉtodo ou operador se comporte de maneira diferente dependendo do objeto. Isso se manifesta por meio de sobrecarga de operadores, funรงรตes internas, mรฉtodos definidos pelo usuรกrio e heranรงa. Python programas.

O que รฉ polimorfismo?
O polimorfismo pode ser definido como uma condiรงรฃo que ocorre de muitas formas diferentes. ร um conceito em Python programaรงรฃo em que um objeto definido em Python pode ser usado de diferentes maneiras. Ele permite ao programador definir vรกrios mรฉtodos em uma classe derivada e tem o mesmo nome presente na classe pai. Tais cenรกrios suportam sobrecarga de mรฉtodo em Python.
Polimorfismo em Operatoros
Um operador em Python ajuda a executar tarefas matemรกticas e vรกrias outras tarefas de programaรงรฃo. Por exemplo, o operador '+' ajuda a executar a adiรงรฃo entre dois tipos inteiros em Python, e da mesma forma, o mesmo operador auxilia na concatenaรงรฃo de strings em Python programaรงรฃo.
Tomemos um exemplo de + (mais) Operador em Python para exibir uma aplicaรงรฃo de polimorfismo em Python como mostrado abaixo:
Python Code:
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))
Saรญda:
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'>
O exemplo acima tambรฉm pode ser considerado como um exemplo de sobrecarga do operador.
Polimorfismo em mรฉtodos definidos pelo usuรกrio
Um mรฉtodo definido pelo usuรกrio no Python linguagem de programaรงรฃo sรฃo mรฉtodos que o usuรกrio cria e sรฃo declarados usando a palavra-chave def com o nome da funรงรฃo.
Polimorfismo no Python a linguagem de programaรงรฃo รฉ obtida por meio de sobrecarga e substituiรงรฃo de mรฉtodos. Python define mรฉtodos com palavra-chave def e com o mesmo nome nas classes filha e pai.
Tomemos o seguinte exemplo conforme mostrado abaixo: -
Python Code:
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())
Saรญda:
Perimeter computed for square: 40 Area computed for square: 100 Perimeter computed for Circle: 25.132741228718345 Area computed for Circle: 50.26548245743669
No cรณdigo acima, existem dois mรฉtodos definidos pelo usuรกrio, perรญmetro e รกrea, definidos nas classes cรญrculo e quadrado.
Conforme mostrado acima, tanto a classe cรญrculo quanto a classe quadrada invocam o mesmo nome de mรฉtodo exibindo a caracterรญstica do Polimorfismo para entregar a saรญda necessรกria.
Polimorfismo em Funรงรตes
As funรงรตes integradas em Python sรฃo projetados e compatรญveis para executar vรกrios tipos de dados. Em Python, len() รฉ uma das principais funรงรตes integradas.
Ela funciona com diversos tipos de dados: lista, tupla, string e dicionรกrio. A funรงรฃo len() retorna informaรงรตes definidas de acordo com esses vรกrios tipos de dados.
A figura a seguir mostra como o polimorfismo pode ser aplicado em Python em relaรงรฃo ร s funรงรตes integradas: โ
O programa a seguir ajuda a ilustrar a aplicaรงรฃo do polimorfismo em Python: -
Python Code:
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"}))
Saรญda:
The length of string Guru99 is 6 The length of the list is 3 The length of the dictionary is 2
No exemplo acima, a funรงรฃo len() de Python executa polimorfismo para tipos de dados string, lista e dicionรกrio, respectivamente.
Polimorfismo e Heranรงa
Heranรงa em Python pode ser definido como o conceito de programaรงรฃo em que uma classe filha definida herda propriedades de outra classe base presente em Python.
Existem duas chaves Python conceitos denominados substituiรงรฃo de mรฉtodo e sobrecarga de mรฉtodo.
- Na sobrecarga de mรฉtodo, Python fornece o recurso de criaรงรฃo de mรฉtodos que possuem o mesmo nome para realizar ou executar diferentes funcionalidades em um determinado trecho de cรณdigo. Permite sobrecarregar mรฉtodos e utilizรก-los para realizar diferentes tarefas em termos mais simples.
- Na substituiรงรฃo de mรฉtodo, Python substitui o valor que compartilha um nome semelhante nas classes pai e filho.
Tomemos o seguinte exemplo de polimorfismo e heranรงa conforme mostrado abaixo: โ
Python Code:
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())
Saรญda:
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
No cรณdigo acima, os mรฉtodos tรชm o mesmo nome definido como mรฉtodo init e mรฉtodo area1. Os objetos da classe quadrado e retรขngulo sรฃo entรฃo usados โโpara invocar os dois mรฉtodos para executar tarefas diferentes e fornecer a saรญda da รกrea do quadrado e do retรขngulo.
Polimorfismo com os mรฉtodos de classe
O Python a programaรงรฃo permite que os programadores alcancem polimorfismo e sobrecarga de mรฉtodos com mรฉtodos de classe. As diferentes classes em Python pode ter mรฉtodos que sรฃo declarados com o mesmo nome em todo o Python cรณdigo.
In Python, duas classes diferentes podem ser definidas. Uma seria a classe filha e deriva atributos de outra classe definida denominada classe pai.
O exemplo a seguir ilustra o conceito de Polimorfismo com mรฉtodos de classe: โ
Python Code:
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()
Saรญda:
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.
No cรณdigo acima, duas classes diferentes chamadas flipkart e amazon usam os mesmos nomes de mรฉtodo info e init para fornecer respectivas cotaรงรตes de preรงos do produto e ilustrar melhor o conceito de polimorfismo em Python.
Diferenรงa entre sobrecarga de mรฉtodo e polimorfismo em tempo de compilaรงรฃo
No polimorfismo em tempo de compilaรงรฃo, o compilador do Python programa resolve a chamada. O polimorfismo em tempo de compilaรงรฃo รฉ realizado por meio da sobrecarga de mรฉtodos.
O Python o compilador nรฃo resolve as chamadas durante o tempo de execuรงรฃo para polimorfismo. Tambรฉm รฉ classificado como substituiรงรฃo de mรฉtodo, em que os mesmos mรฉtodos carregam assinaturas ou propriedades semelhantes, mas fazem parte de classes diferentes.


