Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Mixins | Polimorfismo e Abstração
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

book
Mixins

Mixins são exemplos excepcionais de polimorfismo, pois permitem alterar o comportamento e aprimorar a funcionalidade de outra classe. Eles não são feitos para serem usados de forma independente e não possuem um contexto lógico distinto.

Funcionalidades extras podem tanto substituir a funcionalidade base quanto complementá-la.

Vamos considerar um exemplo:

12345678910111213141516171819202122232425262728293031323334
class AdminAccessMixin: access = "Admin" def check_access(self): print(f"The {self.username} has Admin Access Type") class BlockedAccessMixin: access = "Blocked" def check_access(self): print(f"The {self.username} is blocked") class User: access = "User" def __init__(self, username, password): self.username = username self.password = password def check_access(self): print(f"The {self.username} has default access") class BlockedUser(BlockedAccessMixin, User): pass class Admin(AdminAccessMixin, User): pass user = User("bob111", "bob123secret") admin = Admin("top.admin", "secret_password") blocked_user = BlockedUser("hacker911", "qzdfaswe") for person in [user, admin, blocked_user]: person.check_access()
copy

Cada método check_access() pode ter uma implementação diferente.

Mixins permitem a responsabilidade de alterar a funcionalidade nas classes.

Nota

  • O nome do Mixin deve terminar com Mixin. Este é o acordo entre os programadores.

  • Os Mixins devem estar no início da ordem de herança. class SomeClass(FirstMixin, LastMixin, FirstParent, LastParent)

  • Você pode usar mixins para adicionar novas funcionalidades em classes.

  • Os Mixins são considerados código sujo porque utilizam atributos e métodos que não são especificamente destinados a eles próprios (já que os mixins são projetados para outras classes). Portanto, usar mixins é geralmente considerado uma má prática, e é melhor evitá-los e usá-los apenas quando necessário.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 2
We're sorry to hear that something went wrong. What happened?
some-alt