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

2024-09-29 23:23:00 发布

您现在位置:Python中文网/ 问答频道 /正文

出于某些原因,尽管Python的“beexplicit”准则,许多类型都可以隐式转换为布尔值。不管怎样。。。在

在适当的情况下,使自定义类也隐式地转换为bool是一种习惯做法吗?如果是,我应该(重新)定义什么功能?在我的具体例子中,我有一个Image类;我想将它转换为bool,这样当它保存从某个地方(文件)加载的数据时,它是True,否则是{}。在


Tags: 文件数据image功能true类型定义地方
1条回答
网友
1楼 · 发布于 2024-09-29 23:23:00

这个可以是惯用的;例如,容器对象应该在它们为空时测试false。您应该在python2.x中定义^{},在python3中定义^{}来进行转换。当编写面向python2和python3的代码时,请同时定义这两个。在

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

相关问题 更多 >

    热门问题