2013-02-03 16 views
6

के साथ डॉट नोटेशन में ऑब्जेक्ट प्रॉपर्टी निर्दिष्ट करना क्या एक चर के साथ एक पायथन ऑब्जेक्ट पर किसी प्रॉपर्टी/विधि का उपयोग करना संभव है और कैसे?एक वैरिएबल

उदाहरण:

handler.request.GET.add() 

मैं पहले से एक चर में विधि पर कब्जा करने के लिए और फिर डॉट नोटेशन यह का उपयोग करके 'प्राप्त' भाग को बदलने के लिए चाहते हैं।

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

मैं नहीं देख सकता कि यह कहां/कैसे करें।

+0

यह ध्यान देने योग्य बात है कि अक्सर (हमेशा नहीं है, लेकिन अक्सर) के लायक है जब आपको लगता है कि आप इस की जरूरत है क्या कर सकते हैं, आप क्या _really_ चाहते कार्यों या तरीकों के लिए एक 'dict' मानचित्रण नाम है। (कई अन्य भाषाओं की तुलना में पाइथन में करना आसान है, इसलिए यह अधिक बार उचित है।) – abarnert

उत्तर

9

आप getattr लिए देख रहे हैं कुछ कर सकते हैं।

तो तुम

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

टाइपो: 'getattr (हैंडलर.रेक्वेस्ट, विधि) .add()' होना चाहिए। – zeantsoi

5

उपयोग getattr() function डायनामिक विशेषताएं उपयोग करने के लिए:

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

जो handler.request.GET.add() के रूप में बिल्कुल वही बात करना होगा।

getattr(handler.request, 'GET')handler.request.GET रूप में ही है:

2

आप की तरह getattr

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

तो बस करना

method = "GET" # or "POST" 
getattr(handler.request, method).add() 
संबंधित मुद्दे