在 Python 中,要为“if object:”重写什么运算符?
我发现使用以下构造检查对象是否为“空”非常方便:
l=[]
if l:
do_stuff()
对于标准 python 列表,仅当列表不为空时才会执行 if
。
我的问题是,如何为我自己的对象实现相同的想法?
I find it very handy to check if an object is "empty" with the following construct:
l=[]
if l:
do_stuff()
For a standard python list, the if
will be executed only if the list is not empty.
My question is, how can I implement the same idea for my own objects?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
定义方法
__bool__
(Python 3.x) 或__nonzero__
(2.x)。或者为了可移植性而定义两者,其中一个返回另一个的结果。Define a method
__bool__
(Python 3.x) or__nonzero__
(2.x). Or define both for portability, with one returning the result of the other.为 Python 2 和
__bool__
对于 Python 3:Implement
__nonzero__
for Python 2 and__bool__
for Python 3:如果您实现 __len__,Python 会为您执行此操作,假设长度为 0 意味着该对象的布尔值为 False,并且它的布尔值为否则
True
。如果实现
__len__
没有意义,您可以实现__nonzero__
(或 3.x 中的__bool__
(仅名称已更改)),其中应该返回True
或False
,具体取决于对象的布尔值。If you implement
__len__
Python will do that for you under the assumption that a length of 0 means that the object has a boolean value ofFalse
and that it has a boolean value ofTrue
otherwise.If it makes no sense to implement
__len__
, you can implement__nonzero__
(or__bool__
in 3.x (only the name has changed)) which is supposed to return eitherTrue
orFalse
depending on the boolean value of the object.