मैं के रूप मेंkwargs के रूप में कार्य करने के लिए argparse तर्क पर कैसे पास करें?
class M(object):
def __init__(self, **kwargs):
...do_something
इस प्रकार एक वर्ग को परिभाषित किया है और मैं argparse.parse_args()
का परिणाम है, उदाहरण के लिए:
> args = parse_args()
> print args
Namespace(value=5, message='test', message_type='email', extra="blah", param="whatever")
मैं (message_type
को छोड़कर) इस नाम स्थान का मान प्रदान करने के लिए चाहते हैं बनाने के लिए कक्षा M
का एक उदाहरण। मैं
M(args)
कोशिश की, लेकिन एक त्रुटि
TypeError: __init__() takes exactly 1 argument (2 given)
जो मुझे समझ नहीं आता मिला है। मैं कैसे
- मूल्य
message_type
सूची से मेंargs
- पास मूल्यों पर जैसे मैं
M(value=5, message='test', extra="blah", param="whatever")
सीधे टाइप करेंगे निकाल सकते हैं। एक शब्दकोश के रूप मेंM(**vars(args))
vars()
function रिटर्न नामस्थान उदाहरण के नाम स्थान (अपने__dict__
विशेषता):
मुझे वही चाहिए जो मुझे चाहिए। धन्यवाद। निश्चित कुंजी को हटाने के अलावा। मुझे इसे हटाने की जरूरत है, मैं इस सवाल के दायरे से बाहर के कारणों के लिए इसे अनदेखा नहीं कर सकता। – Alex
मैं 'vars' के साथ संभव अपरिभाषित व्यवहार से बचने के लिए' arg_dict = dict ((k, v) के लिए v, v में vars (args) .items() if k! = "Message_type") करने का सुझाव देता हूं। – Alex
@Alex: 'vars' के साथ क्या अपरिभाषित व्यवहार? आप 'message_type' कुंजी को इस तरह से फ़िल्टर कर सकते हैं, निश्चित रूप से, लेकिन इसके लिए स्वयं करें, क्योंकि' vars() 'में अपरिभाषित व्यवहार हो सकता है (जो यह नहीं करता है)। –