Как мы знаем, Python имеет логические значения для объектов: если класс имеет метод __len__
, каждый экземпляр которого, для которого __len__()
произойдет с возвратом 0, будет оцениваться как булев False
(например, пустой список).
Фактически, каждый итерируемый пустой пользовательский объект оценивается как False
, если он появляется в логическом выражении.
Теперь предположим, что у меня есть класс foo
с атрибутом bar
. Как я могу определить его значение истины, так что, скажем, он будет оцениваться как True if bar % 2 == 0
и False
иначе?
Например:
myfoo = foo()
myfoo.bar = 3
def a(myfoo):
if foo:
print "spam"
else:
print "eggs"
поэтому a(myfoo)
должен печатать "eggs"
.