2010-05-18 6 views
4

Je ne suis pas tout à fait sûr de la terminologie ici, donc s'il vous plaît garder avec moi ....Python: appelant le constructeur à partir du dictionnaire?

Disons que j'ai un appel constructeur comme ceci:

machineSpecificEnvironment = Environment(
    TI_C28_ROOT = 'C:/appl/ti/ccs/4.1.1/ccsv4/tools/compiler/c2000', 
    JSDB = 'c:/bin/jsdb/jsdb.exe', 
    PYTHON_PATH = 'c:/appl/python/2.6.4', 
) 

sauf que je voudrais remplacer par ce une opération sur un dictionnaire qui m'est fourni:

keys = {'TI_C28_ROOT': 'C:/appl/ti/ccs/4.1.1/ccsv4/tools/compiler/c2000', 
     'JSDB': 'c:/bin/jsdb/jsdb.exe', 
     'PYTHON_PATH': 'c:/appl/python/2.6.4'} 
machineSpecificEnvironment = Environment(
    ... what do I put here? it needs to be a function of "keys" ... 
) 

Comment est-ce que je peux faire ceci?

Répondre

5
machineSpecificEnvironment = Environment(**keys) 
+0

où est cette documentation? –

+1

Dans la documentation * canard * http://docs.python.org/tutorial/controlflow.html#keyword-arguments http://docs.python.org/tutorial/controlflow.html#unpacking-argument-lists – Rudi

+0

différents endroits, mais le problème est de savoir ce qu'il faut rechercher (et même dans ce cas, puisqu'il n'y a pas de mot-clé, il est difficile de chercher). Essayez http://docs.python.org/reference/expressions.html#calls pour la syntaxe d'appel de fonction formelle. – Duncan

3

Vous pouvez appliquer un dict comme une liste d'arguments par la notation **

machineSpecificEnvironment = Environment(**keys) 
Questions connexes