深入挖掘pythonif语句

这可能是一个非常愚蠢的问题,但我无法在其他任何地方找到答案,我已经看过了,但是我找不到与我的问题相关的任何内容。

题:

在python中,不知道其他语言,每当我们为内置类调用if语句时,它都会返回if语句解释的内容,例如,

a = 0
if a: print("Hello World")

作为上述语句不打印任何东西if aFalse。现在返回的是哪个方法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


以上是深入挖掘pythonif语句的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>