当我得到一个 pylint 错误时,正在使用 discord.py 的 Discord 意图,因为我得到一个 pylint 错误:“分配给属性”“未在类插槽中定义”

Posted

技术标签:

【中文标题】当我得到一个 pylint 错误时,正在使用 discord.py 的 Discord 意图,因为我得到一个 pylint 错误:“分配给属性”“未在类插槽中定义”【英文标题】:Is using Discord intents with discord.py "bugged" with pylint as I get a pylint error: "Assigning to attribute " " not defined in class slots" 【发布时间】:2021-05-31 10:33:19 【问题描述】:

我目前正在使用最新版本的 pylint、python3.92 和 discord.py 开发一个小型 discord 机器人。 在使用不和谐意图时,我遇到了一个让我难过的 pylint 错误。 这是一个更普遍的问题,因为无论我在做什么仍在工作,并且在做我打算在我的实际项目中做的事情。 但是,据我所知,我似乎无法解决或摆脱这个错误,因为我根据文档使用了 discord.py 意图,这严重困扰着我。 这个 sn-p 来自一个测试机器人,用来展示具体的错误。

import discord
from discord.ext import commands

intents = discord.Intents.default()

intents.members = True 
intents.presences = True

bot = commands.Bot(command_prefix='.', intents=intents)

@bot.command()
async def ping(ctx):
    ctx.send("pong")

bot.run('TOKEN')

现在 pylint 向我显示了这段代码中的两个错误,都考虑了意图属性分配。

来自文档:

 import discord
 intents = discord.Intents.default()
 intents.typing = False
 intents.presences = False

 # Somewhere else:
 # client = discord.Client(intents=intents)
 # or
 # from discord.ext import commands
 # bot = commands.Bot(command_prefix='!', intents=intents)

我发现的一种可能性是以下解决方法:

intents = discord.Intents(members=True, presences=True)

但是,由于我计划在一个机器人中使用不同的功能并且不想手动添加我需要的所有意图,因此我计划尽可能坚持使用discord.Intents.default()

据我所知,这些错误不会妨碍功能或导致任何其他错误。对于不同类型的意图,错误是相同的,而不仅仅是特权意图。 我的问题是:

    我做错了吗? 我怎样才能摆脱这些 错误?

不幸的是,我对语言、discord.py 和 pylint 的了解还不够先进,无法改变周围的事物并以适当的方式消除错误。

提前致谢!

【问题讨论】:

【参考方案1】:

理论上,错误的代码应该是这样的 (source):

class Foo:
    __slots__ = ('bar',)

    def __init__(self, bar, baz):
        self.bar = bar
        self.baz = baz # [assigning-non-slot]
        self.setup()

    def setup(self):
        pass

正确的代码如下:

class Foo:
    __slots__ = ('bar', 'baz')

    def __init__(self, bar, baz):
        self.bar = bar
        self.baz = baz
        self.setup()

    def setup(self):
        pass

现在,如果当前表单中的代码对您有用,尤其是如果这是使用依赖项的官方且更简单的方法...那么这是 pylint 的误报,您可以使用 # pylint: disable=assigning-non-slot 禁用该消息甚至整个项目都使用pylintrc

【讨论】:

以上是关于当我得到一个 pylint 错误时,正在使用 discord.py 的 Discord 意图,因为我得到一个 pylint 错误:“分配给属性”“未在类插槽中定义”的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio Code 中的 Pylint“未解决的导入”错误

点击和pylint

Pylint和Subprocess.Run返回退出状态28

当我试图运行路径分析时,如何克服R中MetaboAnalyst的问题?

了解Pylint E1101:实例没有替换成员

Python语言规范之Pylint的使用