在Python中,我有以下情况:
我有一个名为my_class_instance的类的实例。
代码执行以下检查:
if not my_class_instance:
print ("check was reached")
not ...
在这种情况下检查什么? my_class_instance
指的是None
?
答案 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),那么以这种方式编写测试的情况并不罕见永远是假的。