Ampliando Funcionalidade com super()

No Python, super() é uma função embutida usada para chamar um método da classe pai. É especialmente útil na herança de classes quando você quer estender ou modificar o comportamento de um método da superclasse na subclasse. O super() também é crucial para a inicialização adequada das subclasses.
Para entender como o super() pode ser usado com métodos e inicialização de classes, vamos usar o exemplo de animais emitindo sons. Vamos criar uma classe Animal e duas subclasses, Dog e Cat.
class Animal:                       # Define uma classe chamada 'Animal'
    def __init__(self, species):
        self.species = species

    def speak(self):
        return 'Sounds...'

class Dog(Animal):                  # Define uma subclasse chamada 'Dog' que herda de 'Animal'
    def __init__(self, name):
        super().__init__('Dog')     # Chama o método '__init__' do pai usando 'super()'
        self.name = name            # Atributo adicional 'name' para 'Dog'
        print(self.species)         # Irá imprimir 'Dog'

    def speak(self):
        original = super().speak()  # Chama o método 'speak' do pai usando 'super()'
        return original + ' Woof!'

class Cat(Animal):                  # Define uma subclasse chamada 'Cat' que herda de 'Animal'
    def __init__(self, name):
        super().__init__('Cat')     # Chama o método '__init__' do pai usando 'super()'
        self.name = name            # Atributo adicional 'name' para 'Cat'

    def speak(self):
        original = super().speak()  # Chama o método 'speak' do pai usando 'super()'
        return original + ' Meow!'

dog = Dog('Rex')                              # Cria uma instância da classe 'Dog'
cat = Cat('Fluffy')                           # Cria uma instância da classe 'Cat'
print(dog.name, dog.species, dog.speak())     # Rex Dog Sounds... Woof!
print(cat.name, cat.species, cat.speak())     # Fluffy Cat Sounds... Meow!
Aqui, tanto as subclasses Dog quanto Cat usam super().__init__() para chamar o método __init__() da sua superclasse Animal. Isso garante que cada instância de Dog ou Cat seja corretamente inicializada com o respectivo nome da espécie. Da mesma forma, o método speak() em ambas as subclasses usa super().speak() para chamar o método speak() de Animal, permitindo que incluam o som original do animal em seus próprios métodos speak().
Portanto, a função super() permite que uma subclasse aproveite e estenda o comportamento de sua superclasse. Ela desempenha um papel crucial ao melhorar a reutilização de código, garantindo a inicialização adequada das subclasses e mantendo seu código modular e legível. Isso faz dela uma ferramenta poderosa na programação orientada a objetos com Python.

Desafio: Classes de Veículos

Você foi encarregado de criar classes para diferentes tipos de veículos. Essas classes devem simular algumas propriedades e comportamentos de veículos do mundo real.
  1. Classe Vehicle: A classe base. Deve ter os seguintes atributos:
      • make: represents the manufacturer of the vehicle.
      • model: represents the specific model of the vehicle.
      • year: represents the year the vehicle was manufactured.
      • A method named honk() that, when called, prints the string Honk!.
  1. Classe Car: Esta classe deve herdar da classe Vehicle. Deve ter todos os atributos e métodos da classe Vehicle, além do seguinte:
      • color: represents the color of the car.
      • It should override the honk() method of the Vehicle class. When called, this method should print the string Beep beep!.
  1. Classe Bicycle: Esta classe também deve herdar da classe Vehicle. Deve ter todos os atributos e métodos da classe Vehicle, mas precisa sobrescrever o método honk().
Quando chamado, este método deve imprimir Ring ring!.
Entrada
Saída
car=Car('Tesla', 'Model S', 2022, 'Red'); bicycle=Bicycle('Schwinn', 'Fastback', 2020); car.honk(); bicycle.honk()
Beep beep! Ring ring!
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue