1. Nessa aula vamos aprender a importância do polimorfismo dentro do contexto de Orientação a Objetos.
  2. Uma boa definição para polimorfismo é que podem invocar métodos que têm a mesma assinatura, mas comportamentos distintos.
  3. Imagine que no exemplo que desenvolvemos na aula anterior, queremos fornecer um desconto para telefones que forem comprados a vista. E esse desconto é de 10% no valor do produto.
  4. Imagine também, que queremos definir que para a classe Smartphone esse desconto fosse de 15% e não de 10%. Bem, aí está uma boa aplicabilidade para utilizar o Polimorfismo em Python.
  5. Para praticar, vamos criar o arquivo 12-polimorfismo.py.
class Phone: 
    def __init__(self,brand,model_name,price):
        self._brand = brand
        self._model_name =  model_name
        self._price =  max(price,0)
        
    @staticmethod
    def make_a_call(phone_num):
        print(f"calling {phone_num}...")
    
    def __str__(self):
        return f"{self._brand}{self._model_name}"
    
    def discount(self):
        return self._price * 0.10
    
class SmartPhone(Phone): 
     def __init__(self,brand,model_name,price, ram, internal_memory, back_camera):  
        
        super().__init__(brand,model_name,price)  
        
        self.ram = ram
        self.internal_memory =  internal_memory
        self.back_camera = back_camera
        
     def discount(self):
        return self._price * 0.15
        
Moto =  Phone('Moto','G7',1000)
print(Moto)
Moto.make_a_call(232132)
print(f"Valor do {Moto._brand}{Moto._model_name} com desconto é {Moto.discount()}")
print(vars(Moto))

Iphone = SmartPhone('Iphone','13',7000,'4GB','128GB','25MP')
print(Iphone)
Iphone.make_a_call(32142342)
print(f"Valor do {Iphone._brand}{Iphone._model_name} com desconto é {Iphone.discount()}")
print(vars(Iphone))
  1. Para executar o arquivo, vamos executar o comando: python .\12-polimorfismo.py.

Img12.png