这是一个关于如何检测对象是否为空的通用问题。我将一个变量声明为一个对象: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 回答
qq_遁去的一_1
TA贡献1725条经验 获得超7个赞
您可以覆盖以下__bool__方法discord.Embed:
import discord
discord.Embed.__bool__ = lambda self: bool(self.title)
以便Embed对象只有在标题非空时才被认为是真实的,并且您的代码:
if description: client.send_message(message.channel, embed=description)
会按预期工作。
浮云间
TA贡献1829条经验 获得超4个赞
Python 对empty
(evaluates to False
)的定义基于通用对象,而不是您脑海中的任何东西。如果您控制类(在本例中您不控制),您可以添加一个isEmpty
方法来实现您自己的想法。
但是,由于您使用的是完善的类,因此您需要通读文档以了解如何针对您的“空”的想法“提出”正确的问题。您的变量description
绝对不是空的:它在对象字段等中有您的初始化信息。默认定义是对象描述是否为None
。
我从您的使用情况推断您可能想查看是否有任何未完成的消息。如果是这样,我想你可以用
if description.messages: client.send_message(message.channel, embed=description)
messages
是一个双端队列,它的内在isEmpty
方法可以做你想做的事。
添加回答
举报
0/150
提交
取消