当错误的#参数时,如何让__init __()引发更有用的异常而不是TypeError?

Kyl*_*ker 6 python django typeerror

我有一个带有init的类,它带有很多参数 - 有些需要,有些则不需要.

如果未提供其中一个必需的参数,您可能会收到一个TypeError,其中包含一条无用的消息,例如"需要至少10个参数(给定14个)".

我想有一个自定义的TypeError子类,它实际上告诉用户缺少哪些参数.

小智 5

如果要使用kwargs,可以在init中设置所需参数的列表,然后检查是否存在所有必需的kwargs.请查看以下示例.

class Something():
    def __init__(self, **kwargs):
        required_args = ['arg_1', 'arg_2']

        for arg in required_args:
            if arg not in kwargs:
                raise TypeError("Argument %s is required" % arg)

obj = Something(arg_1=77, arg_3=2)
Run Code Online (Sandbox Code Playgroud)