Files
cursopython2023/aula142.py

38 lines
1.1 KiB
Python

# Classes abstratas - Abstract Base Class (abc)
# ABCs são usadas como contratos para a definição
# de novas classes. Elas podem forçar outras classes
# a criarem métodos concretos. Também podem ter
# métodos concretos por elas mesmas.
# @abstractmethods são métodos que não têm corpo.
# As regras para classes abstratas com métodos
# abstratos é que elas NÃO PODEM ser instânciadas
# diretamente.
# Métodos abstratos DEVEM ser implementados
# nas subclasses (@abstractmethod).
# Uma classe abstrata em Python tem sua metaclasse
# sendo ABCMeta.
# É possível criar @property @setter @classmethod
# @staticmethod e @method como abstratos, para isso
# use @abstractmethod como decorator mais interno.
from abc import ABC, abstractmethod
class Log(ABC):
@abstractmethod
def _log(self, msg): ...
def log_error(self, msg):
return self._log(f'Error: {msg}')
def log_success(self, msg):
return self._log(f'Success: {msg}')
class LogPrintMixin(Log):
def _log(self, msg):
print(f'{msg} ({self.__class__.__name__})')
l = LogPrintMixin()
l.log_error('Oi')