Conteúdo do Curso
Programação Orientada a Objetos em Python Avançado
Programação Orientada a Objetos em Python Avançado
Superclasse
Em Python, uma superclasse é uma classe da qual outras classes são herdadas. Ela atua como a classe pai ou classe base, fornecendo atributos e métodos que podem ser herdados e utilizados por suas subclasses. Elas oferecem uma forma de definir funcionalidades e características comuns que podem ser compartilhadas entre diversas classes relacionadas.
A função super()
em Python é utilizada para acessar e invocar métodos ou atributos de uma superclasse dentro de uma subclasse. Ela fornece uma maneira conveniente de delegar ou chamar a implementação de um método da superclasse. Ao utilizar super()
, você pode invocar um método definido na classe pai, mesmo que o método tenha sido sobrescrito na classe filha. Isso permite a reutilização de código e facilita a extensão ou customização do comportamento da classe pai.
A função super()
é tipicamente usada dentro de uma subclasse para chamar os métodos da classe pai. Ela recebe dois argumentos: a própria subclasse (geralmente self
) e a instância da subclasse (opcional). Quando chamada sem nenhum argumento, super()
retorna um objeto temporário da superclasse. Você pode então invocar métodos ou acessar atributos neste objeto usando ponto (.
). Isso oferece uma maneira de substituir ou estender seletivamente o comportamento da classe pai enquanto ainda se beneficia de sua funcionalidade existente.
class User: def __init__(self, username, password): self.username = username self.password = password class NewUser(User): def __init__(self, username, password, name, surname, age): super().__init__(username, password) self.name = name self.surname = surname self.age = age user = NewUser("user123", "secret_password", "John", "Johnson", 24) print(user.username) print(user.password) print(user.name) print(user.surname) print(user.age)
O código fornecido define duas classes: User
e NewUser
.
A classe User
tem um método construtor __init__()
que recebe dois parâmetros, username
e password
. A classe NewUser
é uma subclasse de User
e a estende adicionando atributos adicionais: name
, surname
e age
.
O método __init__()
na classe NewUser
recebe cinco parâmetros: username
, password
, name
, surname
e age
. Ele chama o método __init__()
da classe pai (User
) usando super().__init__(username, password)
para inicializar os atributos username
e password
herdados da classe User
. Em seguida, define os atributos name
, surname
e age
usando os valores fornecidos.
Nota
Você pode usar a função
super()
para outros métodos e atributos. A chamadasuper()
invoca métodos da classe Pai e usa atributos Pai. Isso nos permite estender métodos pai.
Mais um exemplo:
class User: role = "User" class Admin(User): role = "Admin" def info(self): print(self.role) print(super().role) admin = Admin() admin.info()
Nota
A função super()
é utilizada por frameworks populares como o Django.
Obrigado pelo seu feedback!