这是关于如何检测对象是否为空的通用问题。我将变量声明为对象:
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)
但是以上代码似乎无效,无论是否为空,我的消息都会显示出来。我该怎么办?
答案 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
方法可以完成您想要的操作。