Ответ 1
Для совместимости с Python 2-3 просто добавьте это в свой пример:
Foo.__nonzero__ = Foo.__bool__
или разверните исходное определение Foo, чтобы включить:
__nonzero__ = __bool__
Конечно, вы также можете определить их в обратном порядке, где имя метода __nonzero__
, и вы назначаете его __bool__
, но я думаю, что имя __nonzero__
является просто наследием оригинальной C-истичности Python интерпретация объектов как правды или фальши, основанная на их эквивалентности с нулем. Просто добавьте вышеприведенное выражение, и ваш код будет работать с Python 2.x и будет автоматически работать при обновлении до Python 3.x(и, в конечном итоге, вы потеряете назначение __nonzero__
).