Como sabemos, Python tiene valores booleanos para los objetos: Si una clase tiene un método __len__
, cada instancia de ella para que __len__()
sucede para volver 0 será evaluado como un booleano False
(por ejemplo, la lista vacía).valor booleano de objetos en Python
De hecho, cada objeto personalizado iterable, vacío se evalúa como False
si aparece en la expresión booleana.
Ahora supongamos que tengo una clase foo
con el atributo bar
. ¿Cómo puedo definir su valor de verdad para que, por ejemplo, se evalúe a True if bar % 2 == 0
y False
de lo contrario?
Por ejemplo:
myfoo = foo()
myfoo.bar = 3
def a(myfoo):
if foo:
print "spam"
else:
print "eggs"
es así, debe imprimir a(myfoo)
"eggs"
.
Véase también: '__nonzero __()' –