[英]python: validating function parameters
我需要確保所有命名的參數都傳遞給一個方法(我不想要任何默認值)。 以下是執行它的最佳方法嗎?
class X:
def func(self, **kwargs):
if set(kwargs.keys() != ('arg1', 'arg2', 'arg3'):
raise ArgException(kwargs)
對於Python 2.x,Hugh的答案(即只使用命名的位置參數)是你最好的選擇。
對於Python 3.x中,你也有需要使用的關鍵字參數(而不是僅僅允許它),如下的選項:
class X(object):
def func(self, *, arg1, arg2, arg3):
pass
class X(object):
def func(self, **kwargs):
required = set(['arg1','arg2','arg3'])
if not set(kwargs.keys()).issuperset(required):
raise ArgException(kwargs)
雖然你可以讓翻譯處理它:
class X(object):
def func(self, arg1, arg2, arg3):
pass
你想允許其他論點嗎? 如果不:
class X(object):
def func(self, arg1, arg2, arg3):
pass
如是:
class X(object):
def func(self, arg1, arg2, arg3, **kwargs):
pass
這適用於所有版本的Python。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.