为了账号安全,请及时绑定邮箱和手机立即绑定

如何检测空物体?

如何检测空物体?

尚方宝剑之说 2021-11-09 14:52:33
这是一个关于如何检测对象是否为空的通用问题。我将一个变量声明为一个对象: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)

会按预期工作。


查看完整回答
反对 回复 2021-11-09
?
浮云间

TA贡献1829条经验 获得超4个赞

Python 对empty(evaluates to False)的定义基于通用对象,而不是您脑海中的任何东西。如果您控制类(在本例中您不控制),您可以添加一个isEmpty方法来实现您自己的想法。

但是,由于您使用的是完善的类,因此您需要通读文档以了解如何针对的“空”的想法“提出”正确的问题。您的变量description绝对不是空的:它在对象字段等中有您的初始化信息。默认定义是对象描述是否为None

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

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

messages是一个双端队列,它的内在isEmpty方法可以做你想做的事。


查看完整回答
反对 回复 2021-11-09
  • 2 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信