python - sino - valores booleanos y operaciones logicas
¿Anulando el operador ''a booleano'' en python? (1)
Estoy usando una clase que se hereda de la lista como una estructura de datos:
class CItem( list ) :
pass
oItem = CItem()
oItem.m_something = 10
oItem += [ 1, 2, 3 ]
Todo es perfecto, pero si uso mi objeto de mi clase dentro de un ''si'', python lo evalúa como Falso si la lista no tiene elementos subyacentes. Como mi clase no es solo una lista, realmente quiero evaluar Falso solo si es Ninguno, y evaluar a Verdadero de lo contrario:
a = None
if a :
print "this is not called, as expected"
a = CItem()
if a :
print "and this is not called too, since CItem is empty list. How to fix it?"
En 2.x: anular __nonzero__()
. En 3.x, anula __bool__()
.