如何在自定义类中实现if测试

时间:2011-12-06 07:38:06

标签: python

在自定义类中实现了 _ _ _ _ 方法?所以当我实例化一个新类时,我可以使用

if myobject:
    return True

if not myobject:
    return False

1 个答案:

答案 0 :(得分:3)

如果你想要的是将你的类的实例用作布尔值,即你的类的某些实例是真实的而有些是假的,那么,在你的类中,适当地定义__nonzero__

参见docs

中的第5.1节

默认情况下,说

if myobject:

其中myobject是某个类的实例,将像您编写

一样进行评估
if True:

定义__nonzero__()允许您自定义在布尔上下文中使用对象的方式(可以这么说)。

对于Python 3,情况有所不同。请参阅this SO question