Fügen Sie dies aus Gründen der Python 2-3-Kompatibilität einfach Ihrem Beispiel hinzu:
Foo.__nonzero__ = Foo.__bool__
oder erweitern Sie die ursprüngliche Definition von Foo um:
__nonzero__ = __bool__
Sie können sie natürlich auch umgekehrt definieren, wo sich der Methodenname befindet __nonzero__
und dem Sie ihn zuweisen __bool__
, aber ich denke, der Name __nonzero__
ist nur ein Erbe der ursprünglichen C-Ishness von Pythons Interpretation von Objekten als wahr oder falsch, basierend auf ihrer Äquivalenz mit Null. Fügen Sie einfach die obige Anweisung hinzu, und Ihr Code funktioniert mit Python 2.x und funktioniert automatisch, wenn Sie auf Python 3.x aktualisieren (und schließlich die Zuweisung an ablegen __nonzero__
).
return self.bar > 10
(0 Leerzeichen eingerückt) und das zweite könnte unmittelbar vor der Zeile stehendef __init__(self):
(4 Leerzeichen eingerückt). Ist das korrekt? Oder müsste der zweite nach der__bool__
Definition gehen?