我从C ++背景来到python,我喜欢使用像pylint这样的工具来捕获编译器通常会捕获的明显错误。但是,pylint认为这段代码没问题:
#!/usr/bin/env python
"""Test module"""
class MyException(Exception):
"""A custom exception"""
def __init__(self, error_code, message):
self.error_code = error_code
super(MyException, self).__init__(message)
try:
raise MyException(123, 'One Two Three')
except MyException as err:
print err.errCode
print err.message
当然,问题是“print err.errCode”会导致运行时错误。
这只是对pylint检查的疏忽,还是有些关于python会引用看似不存在的errCode有效?
显然,您可能正在捕获包含该字段的MyException的子类,但如果您在具有显式MyException对象的作用域中,我认为您不希望引用可能存在于子类中的内容。这肯定不是一个错误(我可以想到你可能希望根据函数参数的功能采取不同的操作的许多场景),但它肯定看起来值得警告。