# __nonzero__() overridden to return False
class D:
def __nonzero__(self):
return False
d = D()
print '__nonzero__() overridden to return False: ', bool(d)
print '__nonzero__() overridden to return False: ', bool(D)
为什么一个是True, 一个是False?
object.__nonzero__(self)
Called to implement truth value testing and the built-in operation bool(); should return False or True, or their integer equivalents 0 or 1. When this method is not defined, __len__() is called, if it is defined, and the object is considered true if its result is nonzero. If a class defines neither __len__() nor __nonzero__(), all its instances are considered true.
谢谢 dudu ,实际上关于__nonzero__和bool的用法我知道一二,最主要想知道,d=D(),这个有什么变化,这里的d和D有什么区别,谢谢