如何检测空物体?

时间:2019-02-14 18:22:49

标签: python object embed

这是关于如何检测对象是否为空的通用问题。我将变量声明为对象:

description = discord.Embed()

通过可能会或可能不会将参数传递给对象的方法放置它,即:

def my_function(x, y, z):
    ...some code goes here...
    if x == "some variable": 
        description = discord.Embed(title="X", desc="Y + z")
        return description
    else:
        description = discord.Embed()
        return description

我希望仅在不为空的情况下显示说明:

if description: client.send_message(message.channel, embed=description)

但是以上代码似乎无效,无论是否为空,我的消息都会显示出来。我该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以覆盖__bool__的{​​{1}}方法:

discord.Embed

这样,import discord discord.Embed.__bool__ = lambda self: bool(self.title) 对象只有在其标题为非空且您的代码为真时才被认为是真实的。

Embed

将按预期工作。

答案 1 :(得分:0)

Python对empty的定义(评估为False)基于通用对象,而不是基于您的想法。如果您控制类(在这种情况下则不选择),则可以添加一个isEmpty方法来实现自己的想法。

但是,由于您使用的是建立良好的类,因此您需要通读documentation才能了解如何针对您的“空”概念提出“正确”的问题”。变量description绝对为不是为空:它在对象字段等中具有初始化信息。默认定义是对象描述是否为None

我从您的使用情况推断出,您可能想查看是否有未完成的消息。如果是这样,我认为您可以使用

if description.messages:
    client.send_message(message.channel, embed=description)

messages是双端队列,其固有的isEmpty方法可以完成您想要的操作。