A Função super()
Parte da seção Object Oriented Programming do Journey de Python da Coddy — lição 18 de 64.
A função super() permite que uma classe filha chame métodos de sua classe pai. Isso permite que você estenda a funcionalidade do pai em vez de substituí-la completamente.
Aqui está um exemplo de uso do super() no construtor:
class Animal:
def __init__(self, name):
self.name = name
print(f"Animal created: {name}")
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name) # Chama o __init__ do pai
self.breed = breed
print(f"Dog breed set: {breed}")Crie um objeto cachorro:
buddy = Dog("Buddy", "Golden Retriever")
print(f"Name: {buddy.name}, Breed: {buddy.breed}")Saída:
Animal created: Buddy
Dog breed set: Golden Retriever
Name: Buddy, Breed: Golden RetrieverUse super() para estender métodos pai:
class Animal:
def make_sound(self):
print("Generic animal sound")
class Dog(Animal):
def make_sound(self):
super().make_sound() # Chama o método do pai primeiro
print("Woof!") # Adiciona comportamento específico de cachorroChame o método estendido:
buddy = Dog()
buddy.make_sound()Saída:
Generic animal sound
Woof!Sem o super(), você perderia a funcionalidade da classe pai:
class Cat(Animal):
def make_sound(self):
print("Meow!") # Apenas o som do gato, o método pai é ignorado
cat = Cat()
cat.make_sound()Saída:
Meow!Ponto Chave: Use super() para chamar métodos da classe pai a partir de classes filhas. Isso permite que você estenda a funcionalidade em vez de substituí-la completamente. Usos comuns incluem chamar métodos __init__ da classe pai e estender o comportamento do pai.
Desafio
MédioNeste desafio, você implementará uma hierarquia de classes Person e Employee usando herança.
person.py: Contém a classe Person com os atributos name e ageemployee.py: Contém a classe Employee que herda de Persondriver.py: Arquivo principal para testar sua implementação
Cada arquivo contém comentários TODO detalhados para guiá-lo através da implementação.
Folha de consulta
A função super() permite que uma classe filha chame métodos de sua classe pai, estendendo a funcionalidade em vez de substituí-la.
Usando super() em construtores:
class Animal:
def __init__(self, name):
self.name = name
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name) # Chama o __init__ do pai
self.breed = breedUsando super() para estender métodos:
class Animal:
def make_sound(self):
print("Generic animal sound")
class Dog(Animal):
def make_sound(self):
super().make_sound() # Chama o método do pai primeiro
print("Woof!") # Adiciona comportamento específico da classe filhaSem super(): Os métodos da classe filha substituem completamente a funcionalidade do pai em vez de estendê-la.
Experimente você mesmo
# TODO: Importe a classe Person de person.py
# TODO: Importe a classe Employee de employee.py
def main():
# TODO: Crie um objeto Person com o nome "Alice" e idade 30
person = None
# TODO: Crie um objeto Employee com o nome "Bob", idade 35 e cargo "Developer"
employee = None
# TODO: Chame o método introduce() no objeto Person
# Saída esperada: "Hi, I'm Alice and I'm 30 years old"
# TODO: Imprima uma linha em branco para espaçamento - print()
# TODO: Chame o método introduce() no objeto Employee
# Saída esperada:
# "Hi, I'm Bob and I'm 35 years old"
# "I work as a Developer"
if __name__ == "__main__":
main()Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Object Oriented Programming
1Fundamentos de POO
Arquivos ExternosIntrodução à POOClasses vs ObjetosO Parâmetro selfMétodosAtributosMétodo Construtor (__init__)Recapitulação - Calculadora Simples4Herança
Herança BásicaA Função super()Sobrescrita de MétodoHerança MúltiplaOrdem de Resolução de MétodosRecapitulação - Hierarquia de Funcionários7Métodos Especiais
Introdução aos Métodos MágicosSobrecarga de OperadoresMétodos Mágicos de ContêinerRecapitulação - Lista Personalizada10Padrões de Projeto Parte 1
Introdução a Padrões de ProjetoPadrão SingletonPadrão FactoryPadrão ObserverPadrão Strategy2Decoradores
Introdução aos DecoradoresDecorador de PropriedadeDecorador de Método EstáticoDecorador de Método de Classe5Polimorfismo
Sobrescrita de Método RevisitadaDuck TypingClasses e Métodos AbstratosDesign de InterfacesRecapitulação - Calculadora de Formas8Conceitos Avançados de POO
Composição vs HerançaMixinsMétodos Estáticos e de ClasseDecoradores de ClasseGerenciadores de Contexto11Padrões de Projeto Parte 2
Padrão CommandPadrão AdapterPadrão DecoratorPadrão Template MethodPadrão StatePadrão Composite3Propriedades de Classe
Variáveis de Instância vs de ClasseDecoradores de PropriedadeAtributos PrivadosRecapitulação - Gerenciador de Conta Bancária6Encapsulamento
Membros Públicos, Protegidos e PrivadosModificadores de AcessoOcultação de InformaçãoProperty Decorators AvançadosRecapitulação - Sistema de Registro de Alunos12Projeto: Gerenciamento de Biblioteca
Visão Geral do ProjetoClasses Livro e Usuário