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

时间:2014-01-20 22:18:15

标签: python class initialization

我一直在寻找python中类初始化的几篇帖子(例如Ref1Ref2Ref3)但我找不到是否有一种干净的方法需要确定投入。如果不包含参数,那么制作命名参数的最佳方法是什么,并抛出一致的异常?

我希望add_argument()中的ArgumentParser方法的require参数具有类似的功能。

1 个答案:

答案 0 :(得分:5)

这样的事情应该有效:

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

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

_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")