在 Python 中,要为“if object:”重写什么运算符?

发布于 2024-10-22 06:00:51 字数 170 浏览 1 评论 0原文

我发现使用以下构造检查对象是否为“空”非常方便:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

风吹短裙飘 2024-10-29 06:00:51

定义方法 __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.

等往事风中吹 2024-10-29 06:00:51

为 Python 2 和 __bool__ 对于 Python 3:

class AlwaysTrueObject:
    def __bool__(self):
        return True
    __nonzero__ = __bool__

Implement __nonzero__ for Python 2 and __bool__ for Python 3:

class AlwaysTrueObject:
    def __bool__(self):
        return True
    __nonzero__ = __bool__
浮生面具三千个 2024-10-29 06:00:51

如果您实现 __len__,Python 会为您执行此操作,假设长度为 0 意味着该对象的布尔值为 False,并且它的布尔值为否则True

如果实现 __len__ 没有意义,您可以实现 __nonzero__ (或 3.x 中的 __bool__ (仅名称已更改)),其中应该返回 TrueFalse,具体取决于对象的布尔值。

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 of False and that it has a boolean value of True 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 either True or False depending on the boolean value of the object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文