gpt4 book ai didi

python - 在 python 的自定义错误类中调用 super 有什么意义?

转载 作者:太空狗 更新时间:2023-10-29 17:46:28 24 4
gpt4 key购买 nike

所以我在 Python 中有一个简单的自定义错误类,它是我根据 Python 2.7 文档创建的:

class InvalidTeamError(Exception):
def __init__(self, message='This user belongs to a different team'):
self.message = message

这给了我警告 W0231: __init__ method from base class %r is not called in PyLint 所以我去查了一下,得到了非常有用的描述“需要解释”。我通常只是忽略这个错误,但我注意到大量的在线代码在自定义错误类的 init 方法的开头包含对 super 的调用,所以我的问题是:这样做真的有用吗一个目的还是只是人们试图安抚虚假的 pylint 警告?

最佳答案

这是一个有效的 pylint 警告:如果不使用父类(super class) __init__,您可能会错过父类中的实现更改。而且,事实上,你有 - 因为 BaseException.message 已从 Python 2.6 开始弃用。

这将是一个实现,它将避免您的警告 W0231 并且还将避免 python 关于 message 属性的弃用警告。

class InvalidTeamError(Exception):
def __init__(self, message='This user belongs to a different team'):
super(InvalidTeamError, self).__init__(message)

这是一种更好的方法,因为 implementation for BaseException.__str__只考虑 'args' 元组,它根本不看消息。使用您的旧实现,print InvalidTeamError() 只会打印一个空字符串,这可能不是您想要的!

关于python - 在 python 的自定义错误类中调用 super 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38856819/

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