2012-01-18 3 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

[사용자 정의 클래스에 대한 bool() 덮어 쓰기] (http://stackoverflow.com/questions/2233786) – outis

답변

62

__nonzero__()은 Python 2.x에서 정의해야합니다. Python 3.x에서는 이름이 __bool__()으로 바뀌 었습니다. (실제로는 __nonzero__()이라는 이름이 bool 타입의 도입에 앞서 수년 전부터 있습니다.)

+0

멋지다! – dividebyzero

관련 문제