Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Resumo | Métodos Mágicos
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
Resumo

Agora, observe o código que você escreveu e o descreva para si mesmo:

from abc import ABC, abstractmethod


class AuthMixin:
    is_authenticated = False
    
    def login(self, senha_tentativa):
        if self.password == senha_tentativa:
            self.is_authenticated = True
            print(f"{self.username} está autenticado")
        else:
            print("Senha incorreta!")

    def logout(self):
        self.is_authenticated = False
        print(f"{self.username} deslogou")


class AbstractAdmin(ABC):
    @abstractmethod
    def login():
        pass
    
    @abstractmethod
    def logout():
        pass
        
    @abstractmethod
    def create_content():
        pass
    
    @abstractmethod
    def update_content():
        pass
    
    @abstractmethod
    def delete_content():
        pass


class Usuario(AuthMixin):
    role = "Usuário"
    
    def __init__(self, username, password):
        self.username = username
        self.password = password
    
    @property
    def password(self):
        return self._password

    @password.setter
    def password(self, nova_senha):
        if isinstance(nova_senha, str):
            if len(nova_senha) >= 8:
                self._password = nova_senha
            else:
                print("O tamanho da senha deve ser >= 8.")
        else:
            print("A senha deve ser uma string.")
            
    def __repr__(self):
        return f"{self.role}: {self.username}"
    
    def __eq__(self, outro):
        if isinstance(outro, Usuario):
            return self.username == outro.username
        
        if isinstance(outro, str):
            return self.username == outro
        
        return False


class Administrador(Usuario, AbstractAdmin):
    role = "Administrador"
    
    def create_content(self):
        print(f"{self.username} cria o conteúdo")
        
    def update_content(self):
        print(f"{self.username} atualiza o conteúdo")
        
    def delete_content(self):
        print(f"{self.username} deleta o conteúdo")

Você consegue entender este código com 85 linhas. Parabéns!
Você dominou a Programação Orientada a Objetos em Python e pode utilizar as funcionalidades necessárias!

1. Lembre-se de todos os conceitos de POO (Programação Orientada a Objetos):

2. O que são métodos mágicos?

question mark

Lembre-se de todos os conceitos de POO (Programação Orientada a Objetos):

Select the correct answer

question mark

O que são métodos mágicos?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 6

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

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
Resumo

Agora, observe o código que você escreveu e o descreva para si mesmo:

from abc import ABC, abstractmethod


class AuthMixin:
    is_authenticated = False
    
    def login(self, senha_tentativa):
        if self.password == senha_tentativa:
            self.is_authenticated = True
            print(f"{self.username} está autenticado")
        else:
            print("Senha incorreta!")

    def logout(self):
        self.is_authenticated = False
        print(f"{self.username} deslogou")


class AbstractAdmin(ABC):
    @abstractmethod
    def login():
        pass
    
    @abstractmethod
    def logout():
        pass
        
    @abstractmethod
    def create_content():
        pass
    
    @abstractmethod
    def update_content():
        pass
    
    @abstractmethod
    def delete_content():
        pass


class Usuario(AuthMixin):
    role = "Usuário"
    
    def __init__(self, username, password):
        self.username = username
        self.password = password
    
    @property
    def password(self):
        return self._password

    @password.setter
    def password(self, nova_senha):
        if isinstance(nova_senha, str):
            if len(nova_senha) >= 8:
                self._password = nova_senha
            else:
                print("O tamanho da senha deve ser >= 8.")
        else:
            print("A senha deve ser uma string.")
            
    def __repr__(self):
        return f"{self.role}: {self.username}"
    
    def __eq__(self, outro):
        if isinstance(outro, Usuario):
            return self.username == outro.username
        
        if isinstance(outro, str):
            return self.username == outro
        
        return False


class Administrador(Usuario, AbstractAdmin):
    role = "Administrador"
    
    def create_content(self):
        print(f"{self.username} cria o conteúdo")
        
    def update_content(self):
        print(f"{self.username} atualiza o conteúdo")
        
    def delete_content(self):
        print(f"{self.username} deleta o conteúdo")

Você consegue entender este código com 85 linhas. Parabéns!
Você dominou a Programação Orientada a Objetos em Python e pode utilizar as funcionalidades necessárias!

1. Lembre-se de todos os conceitos de POO (Programação Orientada a Objetos):

2. O que são métodos mágicos?

question mark

Lembre-se de todos os conceitos de POO (Programação Orientada a Objetos):

Select the correct answer

question mark

O que são métodos mágicos?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

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