這是一個關(guān)于如何檢測對象是否為空的通用問題。我將一個變量聲明為一個對象:description = discord.Embed()通過一個可能會或可能不會將參數(shù)傳遞給對象的方法,即: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條經(jīng)驗 獲得超8個贊
您可以覆蓋以下__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條經(jīng)驗 獲得超4個贊
Python 對empty
(evaluates to False
)的定義基于通用對象,而不是您腦海中的任何東西。如果您控制類(在本例中您不控制),您可以添加一個isEmpty
方法來實現(xiàn)您自己的想法。
但是,由于您使用的是完善的類,因此您需要通讀文檔以了解如何針對您的“空”的想法“提出”正確的問題。您的變量description
絕對不是空的:它在對象字段等中有您的初始化信息。默認定義是對象描述是否為None
。
我從您的使用情況推斷您可能想查看是否有任何未完成的消息。如果是這樣,我想你可以用
if description.messages: client.send_message(message.channel, embed=description)
messages
是一個雙端隊列,它的內(nèi)在isEmpty
方法可以做你想做的事。
添加回答
舉報
0/150
提交
取消