Primeiro, obrigado pela generosidade com os TabCoins! Por fim, obrigado pelo seu exemplo, realmente é uma forma mais baixo nível de ver uma classe, eu reescrevi em python como seria um código similar:


def inicializador(self, value):
    self.value = value

def real_to_str(self):
    return 'R$ {:0.2f}'.format(self.value)

def soma(self, money):
    return Real(self.value + money.value)

propriedades_e_metodos = {
   '__init__':  inicializador,
   '__str__': real_to_str,
   '__add__': soma,
}

Real = type('Real', (object, ), propriedades_e_metodos) 

real10 = Real(10)
real20 = Real(20)

print(real10 + real20) # Imprime: R$ 30.00

Pensando bem, apesar da sintaxe que escrevi ser semelhante ao código em Lua, eu não sabia que os métodos mágicos era tratados de forma diferente dos métodos convencionais. Você tem alguma referência sobre isso?

Pela forma que defini no comentário a cima, os métodos mágicos são definidos e tratados iguais aos metodos ordinários.