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