2012-01-18 29 views
36

संभव डुप्लिकेट:
defining “boolness” of a class in pythonपायथन की __bool__ विधि को अधिभार कैसे करें?

मुझे लगा कि यह "गलत" प्रिंट चाहिए, यह क्यों प्रिंट कर रहा है "सही"?

>>> class Foo(object): 
... def __bool__(self): 
...  return False 
... 
>>> f = Foo() 
>>> if f: 
... print "True" 
... else: 
... print "False" 
... 
True 
>>> 
+0

Dup (http://stackoverflow.com/questions/2233786) – outis

उत्तर

62

आपको Python 2.x में __nonzero__() को परिभाषित करना चाहिए। पायथन 3.x में इसका नाम बदलकर __bool__() कर दिया गया था। (नाम __nonzero__() वास्तव में कई वर्षों से bool प्रकार की शुरूआत पहले का है।) [कस्टम वर्ग के लिए अधिभावी bool()] के

+0

इसे ठंडा काम किया! – dividebyzero