【发布时间】:2014-02-10 06:59:15
【问题描述】:
我一直在查看有关 python 中的类初始化的几篇文章(例如Ref1、Ref2、Ref3),但我找不到是否有一种干净的方法来要求某些输入。如果不包含该参数,那么使命名参数成为必需并引发一致异常的最佳方法是什么?
我希望拥有与ArgumentParser 中add_argument() 方法的require 参数类似的功能。
【问题讨论】:
标签: python class initialization
我一直在查看有关 python 中的类初始化的几篇文章(例如Ref1、Ref2、Ref3),但我找不到是否有一种干净的方法来要求某些输入。如果不包含该参数,那么使命名参数成为必需并引发一致异常的最佳方法是什么?
我希望拥有与ArgumentParser 中add_argument() 方法的require 参数类似的功能。
【问题讨论】:
标签: python class initialization
这样的事情应该可以工作:
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")
【讨论】: