Sto usando ConfigObj in python con interpolazione in stile modello. Scompattare il mio dizionario di configurazione tramite ** non sembra fare interpolazione. È una caratteristica o un bug? Qualche soluzione alternativa?Perché non ** kwargs interpola con python ConfigObj?
$ 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'
mi aspetto la seconda linea per essere /test/directory
. Perché l'interpolazione non funziona con ** kwargs?
Il '' argomento chiave ** disimballaggio funziona solo per le mappature. Molto probabilmente, le istanze di 'ConfigObj' non espongono l'intera interfaccia [mapping] (http://docs.python.org/glossary.html#term-mapping). –
ConfigObj * eredita * da dict, quindi fornisce sicuramente l'interfaccia di mappatura completa (e infatti il ** unpack ha * funzionato * ha appena ottenuto i valori sbagliati). Non sono sicuro di come "**" "valuti i valori, è ovviamente bypassando l'interpolazione, dovrò fare qualche esperimento per risolvere il problema: – fuzzyman
Non c'è qualche stranezza associata all'eredità diretta da dict? , http://stackoverflow.com/questions/3387691/python-how-to-perfectly-override-a-dict. Non sono esperto in questo, ma forse usando [MutableMapping] (http: //docs.python .org/library/collections.html # collections.MutableMapping) o [DictMixin] (http://docs.python.org/library/userdict.html#UserDict.DictMixin) sarebbe meglio? –