2010-05-05 8 views
5

पर विविध नामित फ़ील्ड जोड़ना मेरे पास एक पायथन वर्ग है, और मुझे मनमाने ढंग से लंबी सूचियों की मनमानी संख्या जोड़ने की आवश्यकता है। जिन सूचियों को मुझे जोड़ने की ज़रूरत है, उनके नाम भी मनमानी हैं। उदाहरण के लिए, PHP में, मैं यह करूँगा:पाइथन कक्षाओं

class MyClass { 

} 

$c = new MyClass(); 
$n = "hello" 
$c.$n = array(1, 2, 3); 

मैं इसे पायथन में कैसे कर सकता हूं?

मैं यह भी सोच रहा हूं कि यह करने के लिए एक उचित बात है या नहीं। विकल्प कक्षा में सूचियों का एक नियम बनाना होगा, लेकिन सूचियों की संख्या और आकार मनमाने ढंग से है, इसलिए मुझे चिंता थी कि इससे प्रदर्शन प्रदर्शन हो सकता है।

यदि आप सोच रहे हैं कि मैं क्या करने की कोशिश कर रहा हूं, तो मैं एक सुपर-लाइटवेट स्क्रिप्ट दुभाषिया लिख ​​रहा हूं। दुभाषिया मानव-लिखित सूची के माध्यम से चलता है और किसी प्रकार का बाइट-कोड बनाता है। प्रत्येक फ़ंक्शन का बाइट-कोड "एप" कक्षा में फ़ंक्शन के नाम पर सूचीबद्ध सूची के रूप में संग्रहीत किया जाएगा। मुझे यह भी करने के तरीके पर कोई अन्य सुझाव सुनने के लिए उत्सुकता है।

उत्तर

5

setattr का उपयोग करें।

>>> class A(object): 
...  pass 
... 
>>> a = A() 
>>> f = 'field' 
>>> setattr(a, f, 42) 
>>> a.field 
42 
1

मैं इसे अब के लिए सबसे आसान तरीका लिखूंगा, और अगला प्रोफाइल, और फिर विशिष्ट तत्वों को अनुकूलित करने के लिए देखो।

चलो केआईएसएस सिद्धांत को याद रखें।

+0

सहमत है, धन्यवाद –

+0

यकीन है, lol, लेकिन मैं तो बस स्पष्ट करने के लिए चाहता था, यह लग रहा है जैसे आप सपना देख चरण में अभी भी कर रहे हैं, इसलिए मैं जब तक तुम एक कार्यशील प्रोटोटाइप मिल गया है, क्योंकि इस तरह लगता है इंतजार करेंगे एक विशिष्ट अनुकूलन। Dict सूची ठीक है। – jcolebrand

+0

मेरे पास कुछ नकली कक्षाएं हैं और मैं धीरे-धीरे उन्हें भर रहा हूं। मैं मंच पर था जहां मैं एक स्क्रिप्ट के संकलित डेटा को पकड़ने के बारे में पता लगा रहा था। लेकिन वास्तव में, अब तक मैंने कोड की तुलना में कहीं अधिक सोच और सपने देखा है, क्योंकि वहां धागे शामिल हैं और मैं अपने पैर को उड़ाने की कोशिश नहीं कर रहा हूं :) –

संबंधित मुद्दे