मैं टेम्पलेट-शैली इंटरपोलेशन के साथ पाइथन में ConfigObj का उपयोग कर रहा हूं। ** के माध्यम से मेरी कॉन्फ़िगरेशन शब्दकोश को अनवरोधित करना इंटरपोलेशन नहीं लगता है। क्या यह एक सुविधा या बग है? कोई अच्छा कामकाज?क्यों ** kwargs python ConfigObj के साथ interpolate नहीं है?
$ cat my.conf
foo = /test
bar = $foo/directory
>>> import configobj
>>> config = configobj.ConfigObj('my.conf', interpolation='Template')
>>> config['bar']
'/test/directory'
>>> '{bar}'.format(**config)
'$foo/directory'
मैं दूसरी पंक्ति /test/directory
होने की अपेक्षा करता हूं। ** kwargs के साथ interpolation काम क्यों नहीं करता है?
'' ** कीवर्ड तर्क केवल खोल मैपिंग के लिए काम करता है। सबसे अधिक, 'ConfigObj' उदाहरण पूर्ण [मैपिंग] (http://docs.python.org/glossary.html#term-mapping) इंटरफ़ेस को उजागर नहीं कर रहे हैं। –
configObj * dict * से * विरासत से प्राप्त होता है, इसलिए यह निश्चित रूप से पूर्ण मैपिंग इंटरफ़ेस प्रदान करता है (और वास्तव में ** अनपैक * काम किया है * इसे अभी गलत मान मिल गया है)। मुझे यकीन नहीं है कि "**" "मूल्यों को कैसे प्राप्त करता है, यह स्पष्ट रूप से इंटरपोलेशन को छोड़कर है। मुझे काम करने के लिए कुछ प्रयोग करना होगा। – fuzzyman
क्या वहां कुछ अजीबता सीधे विरासत से विरासत में शामिल नहीं है? उदाहरण के लिए , http://stackoverflow.com/questions/3387691/python-how-to-perfectly-override-a-dict। मैं इस पर कोई विशेषज्ञ नहीं हूं, लेकिन शायद [MutableMapping] का उपयोग कर रहा हूं (http: //docs.python .org/लाइब्रेरी/संग्रह.html # संग्रह। मटेबल मैपिंग) या [डिक्टिक्क्सिन] (http://docs.python.org/library/userdict.html#UserDict.DictMixin) बेहतर होगा? –