自定义警告处理类初始化错误

时间:2016-03-18 08:25:57

标签: python python-3.x warnings

我想创建一个类似异常的警告类。

基本上是以下设置

import warnings


class customwarning(warnings):
    pass


class warning1(customwarning):
    def __init__(self, message):
        self.message = message

    def __str__(self):
        return repr(self.message)

但是当我尝试运行警告时,我收到以下错误:

TypeError: module.__init__() takes at most 2 arguments (3 given)

在这一行:

class customwarning(warnings):

在互联网上搜索时,我发现只有

 warnings.filterwarnings('ignore', '.*do not.*',)
 warnings.warn(Warning message')

但是关于课程没什么。 如何创建一个像这样工作的类?

1 个答案:

答案 0 :(得分:1)

您应该做的第一件事是区分 Warning 类和 warnings 类的作用。 Warning 类是您要扩展以创建customwarning 类的基类,而 warnings 类用于控制处理警告的方式一旦发布,即是否被压制或显示。这两个是不同的东西,基本上你应该在你的代码片段中使用它们。 试试:

import warnings


class customwarning(Warning):
    pass


class warning1(customwarning):
    def __init__(self, message):
        self.message = message

    def __str__(self):
        return repr(self.message)


warnings.warn('message',warning1)

代码中的最后一行是代码运行后将向终端呈现警告的内容。 'message' 字符串是第一个参数,它在初始化后传递给 warning1。 在 dunder 方法 str 中表示的是将要显示的内容。要从 warnings 类更改消息的格式,您可以使用其 .formatwarning() 方法。 要了解有关 warnings 及其使用方法的更多信息,请访问 here 您也可以不使用双继承而只从 Warning 类继承一次。