Polimorfismo em Python com EXEMPLOS
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 Código:
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 Código:
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.
Funciona em vários tipos de dados: lista, tupla, string e dicionário. A função Len() retorna informações definidas alinhadas com esses diversos 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 Código:
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 Código:
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
A 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 Código:
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.
A 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.
Resumo
- O polimorfismo pode ser definido como uma condição que ocorre de muitas formas diferentes.
- Um operador em Python ajuda a realizar tarefas matemáticas e diversas outras tarefas de programação.
- 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 em Python oferece diversas qualidades desejáveis, como promover a reutilização de códigos escritos para diferentes classes e métodos.
- Uma classe filha é uma classe derivada e obtém seus atributos da classe pai.
- O polimorfismo também é alcançado através da substituição de métodos em tempo de execução e sobrecarga de métodos em tempo de compilação.
- Polimorfismo em Python também é obtido por meio de sobrecarga de operadores e métodos de classe.