2009-01-11 18 views
35

मैं एक स्ट्रिंग ऑब्जेक्ट के माध्यम से एक वर्ग विशेषता असाइन करना चाहता हूं - लेकिन कैसे?मैं अजगर में __dict__ के माध्यम से एक नई कक्षा विशेषता कैसे आवंटित कर सकता हूं?

उदाहरण:

class test(object): 
    pass 

a = test() 
test.value = 5 
a.value 
# -> 5 
test.__dict__['value'] 
# -> 5 

# BUT: 
attr_name = 'next_value' 

test.__dict__[attr_name] = 10 
# -> 'dictproxy' object does not support item assignment 

उत्तर

59

इस के लिए एक builtin समारोह है:

setattr(test, attr_name, 10) 

संदर्भ: http://docs.python.org/library/functions.html#setattr

उदाहरण:

>>> class a(object): pass 
>>> a.__dict__['wut'] = 4 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'dictproxy' object does not support item assignment 
>>> setattr(a, 'wut', 7) 
>>> a.wut 
7 
+1

इस से मेरे लिए काम करने लगता है वस्तु के अंदर: स्वयं .__ dict __। अद्यतन ई (परिणाम) जहां परिणाम एक नियम है – radtek

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

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