Python:不适用于类实例

时间:2018-03-27 06:02:35

标签: python

在Python中,我有以下情况:

我有一个名为my_class_instance的类的实例。

代码执行以下检查:

if not my_class_instance:
    print ("check was reached")

not ...在这种情况下检查什么? my_class_instance指的是None

1 个答案:

答案 0 :(得分:1)

not运算符会在您的实例上调用bool,然后否定结果。因此,如果您的类定义了__bool__方法,或者您从父类继承了一个方法,那么bool将调用该方法。它还会调用__len__,如果你有一个但没有__bool__(空容器是假的)。如果您没有其中一种方法,那么您的实例将始终是真实的。

但即使你班级的实例总是真实的,做not my_class_instance可能仍然有意义。测试可能只是检查变量是否具有实际实例,而不是像None这样的虚假占位符值。这样的检查可能应该更明确,并且使用if my_class_instance is not None而不是if not my_class_instance,但如果您从未期望实际值(而不是{{1),那么以这种方式编写测试的情况并不罕见永远是假的。