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: โ€“

Polimorfismo em Funรงรตes

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

Polimorfismo em Funรงรตes

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

O processo de 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.

O processo de 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.

Resuma esta postagem com: