class Formatacao:
def sprintf(self, formato):
while "%" in formato:
final = formato.rindex("%")
inicio = formato[final:].index("%")
formato = formato[:final] + formato[final + inicio + 1:]
palavras = formato.split()
for palavra in palavras:
if hasattr(self, palavra):
valor = getattr(self, palavra)
formato = formato.replace(palavra, str(valor))
return formato
class Pessoa(Formatacao):
def __init__(self, nome, sexo, peso, idade):
self.nome = nome
self.sexo = sexo
self.peso = peso
self.idade = idade
pessoa = Pessoa("Joao", "M", 70, 21)
print (pessoa.sprintf("%nome% tem %idade% anos"))
Y2xhc3MgRm9ybWF0YWNhbzogICAgICAgIAogICAgZGVmIHNwcmludGYoc2VsZiwgZm9ybWF0byk6CiAgICAgICAgd2hpbGUgIiUiIGluIGZvcm1hdG86CiAgICAgICAgICAgIGZpbmFsID0gZm9ybWF0by5yaW5kZXgoIiUiKQogICAgICAgICAgICBpbmljaW8gID0gZm9ybWF0b1tmaW5hbDpdLmluZGV4KCIlIikKCiAgICAgICAgICAgIGZvcm1hdG8gPSBmb3JtYXRvWzpmaW5hbF0gKyBmb3JtYXRvW2ZpbmFsICsgaW5pY2lvICsgMTpdCiAgICAgICAgICAgIHBhbGF2cmFzID0gZm9ybWF0by5zcGxpdCgpCgogICAgICAgIGZvciBwYWxhdnJhIGluIHBhbGF2cmFzOgogICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsIHBhbGF2cmEpOgogICAgICAgICAgICAgICAgdmFsb3IgPSBnZXRhdHRyKHNlbGYsIHBhbGF2cmEpCiAgICAgICAgICAgICAgICBmb3JtYXRvID0gZm9ybWF0by5yZXBsYWNlKHBhbGF2cmEsIHN0cih2YWxvcikpCgogICAgICAgIHJldHVybiBmb3JtYXRvCiAgICAKY2xhc3MgUGVzc29hKEZvcm1hdGFjYW8pOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIG5vbWUsIHNleG8sIHBlc28sIGlkYWRlKToKICAgICAgICBzZWxmLm5vbWUgPSBub21lCiAgICAgICAgc2VsZi5zZXhvID0gc2V4bwogICAgICAgIHNlbGYucGVzbyA9IHBlc28KICAgICAgICBzZWxmLmlkYWRlID0gaWRhZGUKCnBlc3NvYSA9IFBlc3NvYSgiSm9hbyIsICJNIiwgNzAsIDIxKQpwcmludCAocGVzc29hLnNwcmludGYoIiVub21lJSB0ZW0gJWlkYWRlJSBhbm9zIikpCg==