Когда можно самостоятельно == Нет
Я смотрю на фрагмент if not self:
в ответе на другой вопрос, который реализует __nonzero__()
,
Это заставляет меня задуматься: кроме __nonzero__()
возврате False
или тривиальное местное назначение self = None
Существуют ли другие ситуации, в которых if not self
правда?
1 ответ
Согласно документации Python по проверке истинности значения:
Любой объект может быть проверен на истинность, для использования в
if
или жеwhile
условие или как операнд логических операций ниже.По умолчанию объект считается истинным, если его класс не определяет
__bool__()
метод, который возвращаетFalse
или__len__()
метод, который возвращает ноль, когда вызывается с объектом.
В коде, на который вы ссылаетесь, __nonzero__()
является эквивалентом Python 2 Python 3 __bool__()
,
Итак, альтернатива __bool__()
Метод в вашем вопросе может быть что-то вроде:
class Lenny:
def __len__(self):
return 0 if self.value == '#' else len(self.children)
Примечание. Ничто из этого не имеет ничего общего с названием вашего вопроса: "Когда можно самостоятельно == Нет". Равенство (стоит ли None
или к чему-либо еще) - это понятие, отличное от истинного значения, и определяется __eq__()
метод:
class Nonelike:
def __eq__(self, other):
return other == None