Pitão

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 classes diferentes, ele é chamado de polimorfismo. Outra característica do OOP é herança, por meio do qual a classe filha pode ser criada herdando os recursos da classe pai. Às vezes, requer que o programador declare um método com o mesmo nome nas classes pai e filho para vários fins. Este tipo de tarefa também pode ser implementado usando 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 de polimorfismo entre duas classes diferentes. Uma função é usada para criar o objeto dessas classes. O valor da variável chamada cor é inicializado no __iniciar__() método de ambos os 'Papagaio' e a 'Avestruz'classes no momento da criação do objeto. O recursos() método é definido em ambas as classes, mas a saída do método para cada classe é um pouco diferente. O Create_Object () função é usada para criar um objeto da classe. Esta função é executada duas vezes para criar o objeto no 'Papagaio'classe e na'Avestruz' aula. Cada um chamará o método features () de ambas as classes e imprimirá a saída.

#!/ usr / bin / env python3
# Defina a classe Parrot
classe Parrot ():
def __init __ (self, color):
auto.color = color
recursos def (próprio):
print ("A cor do papagaio é% s"% self.cor)
imprimir ("O papagaio pode voar")
# Defina a classe de avestruzes
classe Avestruz ():
def __init __ (self, color):
auto.color = color
recursos def (próprio):
print ("A cor da avestruz é% s"% self.cor)
imprimir ("O avestruz não pode voar")
# Defina a função para chamar o método da classe
def Create_Object (Object):
Objeto.recursos()
# Criar objeto da classe Parrot
Create_Object (Parrot ('Green'))
# Criar objeto da classe Ostrich
Create_Object (Avestruz ('Preto e Branco'))

Resultado

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 recursos() 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 recursos() 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 de polimorfismo em duas classes diferentes, mas nenhuma função personalizada é usada para declarar o objeto. O __iniciar__() método de ambos os 'Gerente' e 'Escriturário'classes irão inicializar 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 ambas as classes e iteradas por um para uma volta. Em cada iteração, o post_details () e salário() métodos são chamados para imprimir a saída.

#!/ usr / bin / env python3
# Defina uma classe chamada Manager
gerente de classe:
def __init __ (próprio, nome, departamento):
auto.nome = nome
auto.post = 'Gerente'
auto.departamento = departamento
# Definir função para definir detalhes
def post_details (self):
se eu.departamento.superior () == 'HR':
auto.básico = 30000
senão:
auto.básico = 25000
auto.houseRent = 10000
auto.transporte = 5000
print ("A postagem de% s é% s"% (self.nome, eu.publicar))
# Definir função para calcular o salário
def salary (self):
salário = self.básico + eu.houseRent + self.transporte
salário de retorno
# Defina uma classe chamada Clerk
Escriturário de classe:
def __init __ (self, name):
auto.nome = nome
auto.post = 'Escriturário'
# Definir função para definir detalhes
def post_details (self):
auto.básico = 10000
auto.transporte = 2.000
print ("A postagem de% s é% s"% (self.nome, eu.publicar))
# Definir função para calcular o salário
def salary (self):
salário = self.básico + eu.transporte
salário de retorno
# Crie objetos para as classes
gerente = gerente ("Kabir", "hr")
escriturário = Escriturário ("Robin")
# Chame as mesmas funções das diferentes classes
para obj em (gerente, secretário):
obj.post_details ()
print ("O salário é", obj.salário())

Resultado

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

Exemplo 3: Polimorfismo em Métodos de Classes Relacionadas

O script a seguir mostra o uso de polimorfismo entre duas classes filhas. Aqui, ambos 'Triângulo' e 'Círculo'são as classes filhas da classe parente chamada'Forma geométrica.'De acordo com a herança, a classe filha pode acessar todas as variáveis ​​e métodos da classe pai. O __iniciar__() método do 'Forma geométrica'classe é usada em ambas as classes filhas para inicializar a variável nome usando o super() método. Os valores do base e altura do 'Triângulo'classe será inicializada no momento da criação do objeto. Da mesma forma, os valores do raio do 'Círculo'classe será inicializada no momento da criação do objeto. 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 dos dois métodos são iguais aqui, mas o propósito é diferente. Em seguida, um valor de string será obtido do usuário para criar um objeto e chamar o método com base no valor. Se o usuário digitar 'triângulo', então um objeto de 'Triângulo' classe será criada, e se o usuário digitar 'círculo', então um objeto da 'Círculo' classe será criada. Se o usuário digitar qualquer texto sem 'triângulo' ou 'círculo', nenhum objeto será criado e uma mensagem de erro será impressa.

#!/ usr / bin / env python3
# Defina a classe pai
classe Geometric_Shape:
def __init __ (self, name):
auto.nome = nome
# Defina a classe filha para calcular a área do triângulo
classe Triangle (Geometric_Shape):
def __init __ (self, name, base, height):
super().__init __ (nome)
auto.base = base
auto.altura = altura
def area (self):
resultado = 0.5 * próprio.base * self.altura
print ("\ nA área de% s =% 5.2f "% (self.nome, resultado))
# Definir classe filho para calcular a área do círculo
classe Circle (Geometric_Shape):
def __init __ (self, name, radius):
super().__init __ (nome)
auto.raio = raio
def area (self):
resultado = 3.14 * próprio.raio ** 2
print ("\ nA área de% s =% 5.2f "% (self.nome, resultado))
cal_area = input ("Qual área você deseja calcular? triângulo / círculo \ n ")
se cal_area.superior () == 'TRIANGLE':
base = float (input ('Insira a base do triângulo:'))
height = float (input ('Insira a altura do triângulo:'))
obj = Triângulo ('Triângulo', base, altura)
obj.área()
elif cal_area.superior () == 'CÍRCULO':
radius = float (input ('Insira o raio do círculo:'))
obj = Círculo ('Círculo', raio)
obj.área()
senão:
imprimir ("entrada errada")

Resultado

Na saída a seguir, o script é executado duas vezes. A primeira vez, triângulo é tomado como a 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 de 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 orientação a objetos.

Tutorial de Shadow of the Tomb Raider para Linux
Shadow of the Tomb Raider é a décima segunda adição à série Tomb Raider - uma franquia de jogos de ação e aventura criada pela Eidos Montreal. O jogo ...
Como aumentar o FPS no Linux?
FPS significa Quadros por segundo. A tarefa do FPS é medir a taxa de quadros em reproduções de vídeo ou desempenho de jogos. Em palavras simples, o nú...
Top jogos do Oculus App Lab
Se você é proprietário de um fone de ouvido Oculus, deve estar informado sobre o carregamento lateral. Sideload é o processo de instalação de conteúdo...