我正在使用从列表继承的类作为数据结构:

class CItem( list ) :
  pass
oItem = CItem()
oItem.m_something = 10
oItem += [ 1, 2, 3 ]

一切都很完美,但是如果我在“if”中使用我的类的对象,则如果基础列表中没有元素,则python会将其评估为False。由于我的类(class)不只是列表,因此我真的希望它仅在为None时才评估False,否则就评估为True:
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?"

最佳答案

在2.x中:覆盖 __nonzero__() 。在3.x中,覆盖 __bool__()

09-25 20:58