2009-04-17 6 views
22

estoy usando una clase que se hereda de la lista como una estructura de datos:Anulando el operador 'to boolean' en python?

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 en el interior de un 'si', pitón lo evalúa como False si subyacente la lista no tiene elementos. Desde mi clase no es sólo la lista, realmente lo quiero para evaluar falso sólo si es Ninguno, y evaluar en Verdadero 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?" 
+1

+1 dado que parece descubrirse a sí mismo otra joya maravillosa de Python :) –

Respuesta