由于某些原因,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>
我认为这是pylint中的一个错误。
但是,我做错了什么吗?这里有没有“Pythonic”的方法?
附注:是的,我知道正确的方法是定义自己的异常子类,但我无法控制
some_package
。另外,是的,我知道我可以使用
pylint:disable = no-member
来注释代码。
message
已经被弃用(自Python2.6起)。您可以简单地使用message = str(ex)
(或unicode(ex)
)来实现相同的功能(在Python2.x中,message = ex.args [0]
避免了混合Unicode / str时出错)。 - Bakuriu