【问题标题】:Is there an elegant and pythonic way to require inputs for a class constructor?是否有一种优雅且 Pythonic 的方式来要求类构造函数的输入?
【发布时间】:2014-02-10 06:59:15
【问题描述】:

我一直在查看有关 python 中的类初始化的几篇文章(例如Ref1Ref2Ref3),但我找不到是否有一种干净的方法来要求某些输入。如果不包含该参数,那么使命名参数成为必需并引发一致异常的最佳方法是什么?

我希望拥有与ArgumentParseradd_argument() 方法的require 参数类似的功能。

【问题讨论】:

    标签: python class initialization


    【解决方案1】:

    这样的事情应该可以工作:

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

    如果您希望 anything 成为有效值,只要明确提供某些内容,那么您可以这样做:

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

    【讨论】:

      猜你喜欢
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 2022-06-16
      • 1970-01-01
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 2014-10-04
      相关资源
      最近更新 更多