Polimorfismo em Python

Polimorfismo em Python
Polimorfismo significa “muitas formas.”Polimorfismo Uma característica importante da programação orientada a objetos (OOP). Quando o mesmo método é declarado várias vezes, para vários propósitos e em diferentes classes, é chamado de polimorfismo. Outra característica do OOP é herança, através do qual a classe infantil pode ser criada herdando os recursos da classe pai. Às vezes, exige que o programador declare um método de mesmo nome nas aulas de pais e filhos para vários fins. Esse tipo de tarefa também pode ser implementado usando o polimorfismo. Este artigo explica como o polimorfismo pode ser definido na programação orientada a objetos (OOP).

Exemplo 1: Polimorfismo com funções e objetos

O script a seguir mostra o uso do polimorfismo entre duas classes diferentes. Uma função é usada para criar o objeto dessas classes. O valor da variável nomeada cor é inicializado no __iniciar__() método de ambos 'Papagaio' e a 'AvestruzAulas no momento da criação de objetos. O características() O método é definido em ambas as classes, mas a saída do método para cada classe é um pouco diferente. O Create_object () A função é usada para criar um objeto da classe. Esta função é executada duas vezes para criar o objeto no 'Papagaio'Classe e no'Avestruz' aula. Cada um chamará o método Recursos () de ambas as classes e imprimirá a saída.

#!/usr/bin/Env Python3
# Defina a classe de papagaio
Parrot de classe ():
def __init __ (eu, cor):
auto.cor = cor
Def Recursos (self):
impressão ("a cor do papagaio é %s" %self.cor)
Imprimir ("O papagaio pode voar")
# Defina a classe de avestruz
classe de classe ():
def __init __ (eu, cor):
auto.cor = cor
Def Recursos (self):
impressão ("a cor do avestruz é %s" %self.cor)
impressão ("o avestruz não pode voar")
# Defina a função de chamar o método da classe
def create_object (objeto):
Objeto.características()
# Crie objeto de classe de papagaio
Create_object (Parrot ('verde'))
# Crie objeto de classe de avestruz
Create_Object (Ostrich ('Black and White'))

Saída

A saída a seguir mostra que o objeto do 'Papagaio'Classe é criada com'Verde' Enquanto o cor valor. A função imprime a saída chamando o características() Método do 'Papagaio' aula. Em seguida, o objeto do 'Avestruz'Classe é criada com'Preto e branco' Enquanto o cor valor. A função imprime a saída chamando o características() Método do 'Avestruz' aula.

Exemplo 2: Polimorfismo em métodos de classe não relacionados

Como no exemplo anterior, o script a seguir mostra o uso do polimorfismo em duas classes diferentes, mas nenhuma função personalizada é usada para declarar o objeto. O __iniciar__() método de ambos 'Gerente' e 'Atendente'As aulas inicializarão as variáveis ​​necessárias. O polimorfismo é implementado aqui criando o post_details () e salário() Métodos dentro de ambas as classes. O conteúdo desses métodos é diferente para cada uma dessas classes. Em seguida, as variáveis ​​de objeto são criadas para as classes e iteradas por um para uma volta. Em cada iteração, o post_details () e salário() Os métodos são chamados para imprimir a saída.

#!/usr/bin/Env Python3
# Defina uma classe chamada gerente
Gerente de classe:
def __init __ (self, nome, departamento):
auto.nome = nome
auto.post = 'gerente'
auto.Departamento = Departamento
# Defina a função para definir detalhes
def post_details (self):
se eu.departamento.superior () == 'hr':
auto.BASIC = 30000
outro:
auto.básico = 25000
auto.Housent = 10000
auto.transporte = 5000
impressão ("o post de %s é %s" %(self.nome, eu.publicar))
# Defina função para calcular o salário
Salário definido (self):
salário = eu.básico + self.Housent + self.transporte
Salário de retorno
# Defina uma classe chamada funcionário
Funcionário da classe:
def __init __ (self, nome):
auto.nome = nome
auto.post = 'funcionário'
# Defina a função para definir detalhes
def post_details (self):
auto.BASIC = 10000
auto.transporte = 2000
impressão ("o post de %s é %s" %(self.nome, eu.publicar))
# Defina função para calcular o salário
Salário definido (self):
salário = eu.básico + self.transporte
Salário de retorno
# Crie objetos para as classes
gerente = gerente ("kabir", "hr")
Clerk = Clerk ("Robin")
# Chame as mesmas funções das diferentes classes
para OBJ em (gerente, funcionário):
obj.post_details ()
impressão ("o salário é", obj.salário())

Saída

A saída a seguir mostra que o objeto do 'Manjedoura'A classe é usada na primeira iteração do para Loop e o salário do gerente são impressos após o cálculo. O objeto do 'Atendente'A classe é usada na segunda iteração do para Loop e o salário do funcionário são impressos após o cálculo.

Exemplo 3: Polimorfismo em métodos de classe relacionada

O script a seguir mostra o uso do polimorfismo entre duas classes infantis. Aqui, ambos 'Triângulo' e 'Círculo'são as classes infantis da classe pai denominada'Forma geométrica.'De acordo com a herança, a classe infantil pode acessar todas as variáveis ​​e métodos da classe pai. O __iniciar__() Método do 'Forma geométrica'A classe é usada nas duas classes infantis para inicializar a variável nome usando o super() método. Os valores do base e altura do 'Triângulo'A classe será inicializada no momento da criação de objetos. Da mesma maneira, os valores do raio do 'Círculo'A classe será inicializada no momento da criação de objetos. A fórmula para calcular a área de um triângulo é ½ × base × altura, que é implementado no área() Método do 'Triângulo' aula. A fórmula para calcular a área de um círculo é 3.14 × (raio)2, que é implementado no área() Método do 'Círculo' aula. Os nomes de ambos os métodos são os mesmos, aqui, mas o propósito é diferente. Em seguida, um valor de string será retirado do usuário para criar um objeto e chamar o método com base no valor. Se o usuário digitar o 'triângulo', 'então um objeto do'Triângulo' a classe será criada e se o círculo dos tipos de usuário ',' então um objeto do 'Círculo' A classe será criada. Se o usuário digitar algum texto sem 'triângulo' ou 'círculo', então nenhum objeto será criado, e uma mensagem de erro será impressa.

#!/usr/bin/Env Python3
# Defina a classe pai
Classe geométrica_shape:
def __init __ (self, nome):
auto.nome = nome
# Defina a classe infantil para calcular a área do triângulo
Triângulo de classe (geométrico_shape):
def __init __ (self, nome, base, altura):
super().__init __ (nome)
auto.base = base
auto.altura = altura
Área Def (self):
resultado = 0.5 * self.base * self.altura
print ("\ nA área do %s = %5.2f " %(self.nome, resultado))
# Defina a classe infantil para calcular a área de círculo
CLASS CIRCLE (GEOMETRIC_SHAPE):
def __init __ (eu, nome, raio):
super().__init __ (nome)
auto.raio = raio
Área Def (self):
resultado = 3.14 * eu.raio ** 2
print ("\ nA área do %s = %5.2f " %(self.nome, resultado))
cal_area = entrada ("Qual área você deseja calcular? triângulo/círculo \ n ")
se cal_area.Upper () == 'Triângulo':
base = float (entrada ('Digite a base do triângulo:')))
altura = float (entrada ('Digite a altura do triângulo:')))
obj = triângulo ('triângulo', base, altura)
obj.área()
elif cal_area.superior () == 'círculo':
raio = float (entrada ('digite o raio do círculo:')))
obj = círculo ('círculo', raio)
obj.área()
outro:
print ("entrada errada")

Saída

Na saída a seguir, o script é executado duas vezes. A primeira vez, triângulo é tomado como entrada e o objeto é inicializado por três valores, 'Triângulo', base, e altura. Esses valores são então usados ​​para calcular a área do triângulo e a saída será impressa. A segunda vez, círculo é tomado como entrada e o objeto é inicializado por dois valores 'Círculo' e raio. Esses valores são então usados ​​para calcular a área do círculo e a saída será impressa.

Conclusão

Este artigo usou exemplos fáceis para explicar três usos diferentes do polimorfismo em Python. O conceito de polimorfismo também pode ser aplicado sem classes, um método que não é explicado aqui. Este artigo ajudou os leitores a aprender mais sobre como aplicar o polimorfismo na programação Python baseada em objetos, orientada a objetos.