2013-02-03 23 views
6

È possibile accedere a una proprietà/metodo su un oggetto Python con una variabile e come?Specificare la proprietà dell'oggetto nella notazione punto con una variabile

Esempio:

handler.request.GET.add() 

mi piacerebbe sostituire la parte 'GET' catturando il metodo in anticipo in una variabile e poi usarlo nella notazione punto.

method = handler.method 
handler.request.{method}.add() 

Non riesco a vedere dove/come farlo.

+0

Vale la pena notare che spesso (non sempre, ma spesso), quando pensi di aver bisogno questo, ciò che si _really_ vuoi è un 'dict' nomi di mapping a funzioni o metodi. (Questo è più facile da fare in Python rispetto a molti altri linguaggi, quindi è appropriato molto più spesso.) – abarnert

risposta

9

Stai cercando getattr:

getattr(handler.request, 'GET') è lo stesso di handler.request.GET.

Così si può fare

method = "GET" 
getattr(handler.request, method).add() 
+1

Typo: dovrebbe essere 'getattr (handler.request, method) .add()'. – zeantsoi

5

Utilizzare il getattr() function per accedere attributi dinamici:

method = 'GET' 
getattr(handler.request, method).add() 

che fare esattamente la stessa cosa di handler.request.GET.add().

2

Si potrebbe fare qualcosa di simile getattr

getattr(handler.request, "GET").add() 

Poi basta fare

method = "GET" # or "POST" 
getattr(handler.request, method).add() 
Problemi correlati