TypeError: __init__() doit retourner Aucun, pas de 'int'

Je travaille par le biais de ce tutoriel. Je travaille par le biais de ce de manière itérative. À ce point j'ai de la suite Binaire de la classe:

class Binary:
    def __init__(self,value):
        self.value = str(value)
        if self.value[:2] == '0b':
            print('a binary!')
            self.value= int(self.value, base=2)
        elif self.value[:2] == '0x':
            print('a hex!')
            self.value= int(self.value, base=16)
        else:
            print(self.value)
        return int(self.value)

Je suis en cours d'exécution à travers une série de tests à l'aide de pytest, y compris:

    def test_binary_init_hex():
        binary = Binary(0x6)
        assert int(binary) == 6
      E TypeError: int() argument must be a string or a number, not 'Binary'

J'ai posé une question à propos de ce TypeError: int() argument doit être une chaîne de caractères ou un nombre, et non pas "Binary" et en fonction de la réponse modifié le code comme ci-dessus. Maintenant quand je lance la suite de tests à l'aide de pytest, tous les tests échoue et le message d'erreur est:

       TypeError: __init__() should return None, not 'int'

Pourquoi est-il un problème?

Cette réponse n'est pas de retour int de __init__. Il définit un __int__ méthode, utilisée pour la conversion numérique.
__init__() est utilisé pour initialiser des objets, afin de ne pas l'utiliser de cette façon, mais l'utilisation d'une méthode distincte pour plus tard pour ce but.
Pourquoi est-ce même une classe, et non pas seulement une fonction?

OriginalL'auteur user61629 | 2016-04-16