Python 隐式地将类转换为bool是一种惯用法吗?

Python 隐式地将类转换为bool是一种惯用法吗?,python,Python,出于某种原因,许多类型都可以隐式转换为布尔值,尽管Python有“显式”的指导方针。无论如何 在适当的情况下,使自定义类也隐式转换为bool是否惯用?如果是,我应该(重新)定义什么功能?在我的特殊情况下,我有一个图像类;我想将它转换为bool,这样当它保存从某处(文件)加载的数据时,它是True,否则它是False;e、 例如,容器对象为空时应测试为false。您应该在Python2.x和Python3中定义以进行转换。在编写针对Python2和Python3的代码时,请同时定义这两种代码 然而

出于某种原因,许多类型都可以隐式转换为布尔值,尽管Python有“显式”的指导方针。无论如何

在适当的情况下,使自定义类也隐式转换为bool是否惯用?如果是,我应该(重新)定义什么功能?在我的特殊情况下,我有一个
图像
类;我想将它转换为bool,这样当它保存从某处(文件)加载的数据时,它是
True
,否则它是
False
;e、 例如,容器对象为空时应测试为false。您应该在Python2.x和Python3中定义以进行转换。在编写针对Python2和Python3的代码时,请同时定义这两种代码

然而,为了遵循“显式优于隐式”的原则,您可能只想说
,如果img.is_loaded():
\uuuu nonzero\uuuu
/
\uuuu bool\uuuu
存在的主要原因是容器,这反映在Python数据模型中的描述中:“当未定义此方法时,如果已定义,则调用
\uu len\uuu()
,如果其结果为非零,则认为该对象为真。”因此它实际上是
len(obj)的简写==0
,可能通过更快的检查来实现