Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python,元类,HTTPException,_init_子类_uu-TypeError:异常必须派生自BaseException_Python_Class_Httpexception - Fatal编程技术网

Python,元类,HTTPException,_init_子类_uu-TypeError:异常必须派生自BaseException

Python,元类,HTTPException,_init_子类_uu-TypeError:异常必须派生自BaseException,python,class,httpexception,Python,Class,Httpexception,有人能告诉我如何解决我的问题吗 from werkzeug.exceptions import HTTPException class HTTPExceptions(HTTPException): subclasses = dict() def __init_subclass__(cls, **kwargs): super().__init_subclass__(**kwargs) cls.subclasses[f'{cls.__name__}

有人能告诉我如何解决我的问题吗

from werkzeug.exceptions import HTTPException

class HTTPExceptions(HTTPException):
    subclasses = dict()

    def __init_subclass__(cls, **kwargs):
        super().__init_subclass__(**kwargs)
        cls.subclasses[f'{cls.__name__}'] = cls.__name__


class Error501(HTTPExceptions):
    code = 501
当我尝试跑步时:

raise HTTPExceptions.subclasses['Error501']
我得到


有人知道如何解决它吗?

cls.\uuuu name\uuuuu
是一个字符串,因此您定义
HTTPExceptions的方式。子类
是字符串到字符串的映射。我想你的意图是:

cls.subclasses[f'{cls.__name__}'] = cls
当运行结果为

Traceback (most recent call last):
  File "D:/Dev/python/scratch/subclass_exception.py", line 13, in <module>
    raise HTTPExceptions.subclasses['Error501']
__main__.Error501
回溯(最近一次呼叫最后一次):
文件“D:/Dev/python/scratch/subclass_exception.py”,第13行,在
引发HTTPExceptions.subclass['Error501']
__主要错误501

cls.\uuuu name\uuuu
存储类的名称。使用
cls
存储类本身。
Traceback (most recent call last):
  File "D:/Dev/python/scratch/subclass_exception.py", line 13, in <module>
    raise HTTPExceptions.subclasses['Error501']
__main__.Error501