Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Superclasse | Herança
Programação Orientada a Objetos em Python Avançado
course content

Conteúdo do Curso

Programação Orientada a Objetos em Python Avançado

Programação Orientada a Objetos em Python Avançado

1. Conceitos de POO
2. Herança
3. Encapsulamento
4. Polimorfismo e Abstração
5. Métodos Mágicos

bookSuperclasse

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.

12345678910111213141516171819
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)
copy

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 chamada super() invoca métodos da classe Pai e usa atributos Pai. Isso nos permite estender métodos pai.

Mais um exemplo:

123456789101112
class User: role = "User" class Admin(User): role = "Admin" def info(self): print(self.role) print(super().role) admin = Admin() admin.info()
copy

Nota

A função super() é utilizada por frameworks populares como o Django.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 5
some-alt