Отличный вопрос!Он проверяет bool(a)
, который (обычно) вызывает type(a).__bool__(a)
.
. Python реализует определенные вещи, используя «магические методы».По сути, если у вас есть тип данных, определенный следующим образом:
class MyExampleDataType:
def __init__(self, val):
self.val = val
def __bool__(self):
return self.val > 20
Тогда этот код будет делать то, что выглядит так:
a = MyExampleDataType(5)
b = MyExampleDataType(30)
if a:
print("Won't print; 5 < 20")
if b:
print("Will print; 30 > 20")
Для получения дополнительной информации,см. документацию по Python: 3.3 Имена специальных методов .