gpt4 book ai didi

python - pylint:类 'message' 没有 'startswith' 成员

转载 作者:太空狗 更新时间:2023-10-30 01:32:24 26 4
gpt4 key购买 nike

出于某种原因,pylint 1.6.4 (astroid 1.4.9) 不喜欢这样:

try:
some_package.their_function()
except Exception as ex:
if ex.message.startswith(...):
...

它提示:

error (E1101, no-member, feed_sentiment) Class 'message' has no 'startswith' member

我觉得这很奇怪,因为:

>>> type(Exception("foo").message)
<type 'str'>
>>> Exception("foo").message.startswith
<built-in method startswith of str object at 0x10520d360>

我认为这是一个 bug in pylint .

但是,做错了什么吗?这里的“pythonic”方式是什么?

附言。是的,我知道正确的方法是定义我自己的异常子类,但我无法控制 some_package

PPS。是的,我知道我可以使用 pylint: disable=no-member 注释代码。

最佳答案

这确实是 astroid 中的一个错误 - pylint 的内部库,用于构建抽象语法树和值推断。

import astroid

node = astroid.builder.parse("""
ex = Exception()
msg = ex.message
""")
print list(node.locals['msg'][0].infer())

此代码片段的输出是:

[<ClassDef(message) l.0 [exceptions] at 0x34aadd0>, <ClassDef(message) l.0 [exceptions] at 0x3482cb0>]

输出意味着异常实例上的message 属性被推断为自定义类定义,而不是字符串实例。

感谢您提交错误!

关于python - pylint:类 'message' 没有 'startswith' 成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41983285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com