Last active
October 15, 2020 01:31
-
-
Save MaxMorais/11a5af46b922ab7076e5ed1306dbcb28 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Maiusculo(object): | |
""""Classe que converte qualquer coisa, para texto em maiúsculo""" | |
def __init__(self, valor): | |
"""__init__ é o inicializador da instância da classe, é ele que associa | |
os atributos da instância da classe com os argumentos recebidos""" | |
# Definimos um atributo chamado valor no contexto (self), e convertemos o "valor" do argumento valor | |
# para uma str em maiúscula (upper) | |
self.valor = str(valor).upper() | |
def __str__(self): | |
"""__str__ é o método que será "invocado" pela linguagem ao tentar converter | |
um "Objeto" do tipo "Miusculo" para o tipo "str" """ | |
# Convertemos e retornamos uma string | |
return str(self.valor) | |
def __repr__(self): | |
"""__repr__ é o método que será "invocado" pela linguagem ao tentar imprimir a | |
representação gráfica de um objeto "Maiusculo" """ | |
# Convertemos e retornamos a representação de valor | |
return repr(self.valor) | |
def __add__(self, outro_valor): | |
"""__add__ é o método que será "invocado" pela linguagem ao tentar somar | |
("concatenar") um "Maiusculo" a outro "Objeto", note que aqui | |
vemos uma sobrecarga de operadores. """ | |
#Caso o objeto seja uma string, ou Maiusculo, devolvemos a operação | |
if isinstance(outro_valor, (str, Maiusculo)): | |
return Maiusculo(str(self) + str(outro_valor)) | |
# Se não, delegamos a responsabilidade de concatenação ao objeto | |
return NotImplemented | |
def minuscula(self) | |
"""minuscula é o método que será "invocado" pelo desenvolvedor ao tentar | |
converter um objeto "Maiusculo" e um "str" com todas as letras em minusculo""" | |
return str(self.valor.lower()) | |
if __name__ == "__main__": | |
cidade = Maiusculo("sao paulo") | |
assert cidade.data == "SAO PAULO", "Houve uma falha na conversão para Maiusculo" | |
assert str(cidade) == "SAO PAULO", "Houve uma falha na conversão para str" | |
cidade_estado = cidade + ", sp" | |
assert cidade_estado.data == "SAO PAULO, SP", "Houve uma falha na concatenação com Maiusculo" | |
assert repr(cidade_estado) == "'SAO PAULO, SP'", "Houve uma falha na representação de um Maiusculo" | |
assert cidade_estado.minuscula() == "sao paulo, sp", "Houve uma falha na conversão de Maiusculo para minusculo" | |
assert isinstance(cidade_estado.minuscula(), str), "Houve uma falha na conversão de tipos entre Maiusculo e str" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment