如何检测空物体?

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


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)

然而,上面的代码似乎不起作用,无论它是空的还是其他的,我的消息都会显示出来。我该怎么办?


尚方宝剑之说
浏览 152回答 2
2回答

qq_遁去的一_1

您可以覆盖以下__bool__方法discord.Embed:import discorddiscord.Embed.__bool__ = lambda self: bool(self.title)以便Embed对象只有在标题非空时才被认为是真实的,并且您的代码:if description: client.send_message(message.channel, embed=description)会按预期工作。

浮云间

Python 对empty(evaluates to False)的定义基于通用对象,而不是您脑海中的任何东西。如果您控制类(在本例中您不控制),您可以添加一个isEmpty方法来实现您自己的想法。但是,由于您使用的是完善的类,因此您需要通读文档以了解如何针对您的“空”的想法“提出”正确的问题。您的变量description绝对不是空的:它在对象字段等中有您的初始化信息。默认定义是对象描述是否为None。我从您的使用情况推断您可能想查看是否有任何未完成的消息。如果是这样,我想你可以用if description.messages:     client.send_message(message.channel, embed=description)messages是一个双端队列,它的内在isEmpty方法可以做你想做的事。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python