Ich arbeite durch diese tutorial. Ich arbeite das iterativ durch. An diesem Punkt habe ich folgendes Binary Klasse:TypeError: __init __() sollte None zurückgeben, nicht 'int'
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)
Ich laufe durch eine Reihe von Tests pytest verwenden, einschließlich:
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'
fragte ich eine Frage zu diesem TypeError: int() argument must be a string or a number, not 'Binary' und auf der Grundlage der Antwort habe den Code wie oben geändert. Nun, wenn ich die Reihe von Tests mit pytest ausführen, werden alle die Tests fehlschlagen, und der Fehler ist:
TypeError: __init__() should return None, not 'int'
Warum ist es ein Problem?
beziehen Diese Antwort gibt nicht 'int' von' __init__' zurück. Es definiert eine Methode "__int__", die für die numerische Konvertierung verwendet wird. –
'__init __()' wird verwendet, um Objekte zu initialisieren, also benutze es nicht so, sondern verwende eine separate Methode für diesen späteren Zweck. –
Warum ist das überhaupt eine Klasse und nicht nur eine Funktion? – iAdjunct