2013-02-03 13 views
6

Czy można uzyskać dostęp do właściwości/metody obiektu Python za pomocą zmiennej i jak?Określanie właściwości obiektu w notacji kropkowej ze zmienną

przykład:

handler.request.GET.add() 

ja jak zastąpienie „GET” części przez uchwycenie sposób uprzednio do zmiennej, a następnie wykorzystanie go w notacji dot.

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

Po prostu nie widzę gdzie/jak to zrobić.

+0

Warto zauważyć, że często (nie zawsze, ale często), gdy uważasz, że potrzebujesz tego, co _really_ chcesz jest 'dict' nazwy mapowania do funkcji lub metod. (W Pythonie jest to łatwiejsze niż w wielu innych językach, więc jest o wiele bardziej odpowiednie.) – abarnert

Odpowiedz

9

Szukasz getattr:

getattr(handler.request, 'GET') jest taka sama jak handler.request.GET.

Więc można zrobić

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

Typo: powinno być 'getattr (handler.request, method) .add()'. – zeantsoi

5

Użyj getattr() function dostęp do dynamicznych atrybuty:

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

które robią dokładnie to samo, co handler.request.GET.add().

2

Można zrobić coś jak getattr

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

Następnie wystarczy zrobić

method = "GET" # or "POST" 
getattr(handler.request, method).add() 
Powiązane problemy