深入挖掘pythonif语句
这可能是一个非常愚蠢的问题,但我无法在其他任何地方找到答案,我已经看过了,但是我找不到与我的问题相关的任何内容。
题:
在python中,不知道其他语言,每当我们为内置类调用if语句时,它都会返回if语句解释的内容,例如,
a = 0
if a: print("Hello World")
作为上述语句不打印任何东西if a是False。现在返回的是哪个方法False,或者是否有 if 语句调用的方法来知道它?
或者更准确地说,if 语句如何在更深层次的 Python 中工作?
回答
对象具有__bool__在需要将对象视为布尔值时调用的方法。你可以通过一个简单的测试看到:
class Test:
def __bool__(self):
print("Bool called")
return False
t = Test()
if t: # Prints "Bool Called"
pass
bool(0)给出False,所以0被认为是一个“假”值。
根据报告的长度,一个类也可以被认为是真实的或虚假的:
class Test:
def __len__(self):
print("Len called")
return 0
t = Test()
if t:
pass