fork download
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"))
Success #stdin #stdout 0s 9992KB
stdin
Standard input is empty
stdout
Joao tem 21 anos