Funções decoradoras e decoradores com métodos

This commit is contained in:
Luiz Otávio
2022-11-27 11:52:33 -03:00
parent 6963098f41
commit 3656a20d28

54
aula152.py Normal file
View File

@@ -0,0 +1,54 @@
# Funções decoradoras e decoradores com métodos
def meu_repr(self):
class_name = self.__class__.__name__
class_dict = self.__dict__
class_repr = f'{class_name}({class_dict})'
return class_repr
def adiciona_repr(cls):
cls.__repr__ = meu_repr
return cls
def meu_planeta(metodo):
def interno(self, *args, **kwargs):
resultado = metodo(self, *args, **kwargs)
if 'Terra' in resultado:
return 'Você está em casa'
return resultado
return interno
@adiciona_repr
class Time:
def __init__(self, nome):
self.nome = nome
@adiciona_repr
class Planeta:
def __init__(self, nome):
self.nome = nome
@meu_planeta
def falar_nome(self):
return f'O planeta é {self.nome}'
brasil = Time('Brasil')
portugal = Time('Portugal')
terra = Planeta('Terra')
marte = Planeta('Marte')
print(brasil)
print(portugal)
print(terra)
print(marte)
print(terra.falar_nome())
print(marte.falar_nome())