是否有一种优雅和pythonic的方式来要求类构造函数的输入?

JAC*_*JAC 3 python initialization class

我一直在寻找python中类初始化的几个帖子(例如Ref1,Ref2,Ref3),但我找不到是否需要某些输入的干净方法.如果不包含参数,那么制作命名参数的最佳方法是什么,并抛出一致的异常?

我希望requireadd_argument()方法的参数中具有类似的功能ArgumentParser.

Cla*_*diu 5

这样的事情应该有效:

class Foo(object):
    def __init__(self, required_arg=None):
        if required_arg is None:
            raise ValueError("Expected non-None value for required_arg")
Run Code Online (Sandbox Code Playgroud)

如果您希望任何内容都是有效值,只要明确提供了某些内容,那么您可以执行以下操作:

_Foo_default = object()
class Foo(object):
    def __init__(self, required_arg=_Foo_default):
        if required_arg is _Foo_default:
            raise ValueError("Expected a user-supplied value for required_arg")
Run Code Online (Sandbox Code Playgroud)