मैं निम्नलिखित कोड, eval
फ़ंक्शन का उपयोग करता है जो:eval देने सिंटेक्स त्रुटि
lines = self.fulltext.splitlines()
CURRENT = 0
extractors = { "solar zenith angle" : (CURRENT, 1, "self.solar_z"),
"ground pressure" : (CURRENT, 2, "self.ground_pressure")
}
print locals()
for line in lines:
for label, details in extractors.iteritems():
if label in line:
if details[0] == CURRENT:
values = line.split()
eval("%s = values[%d]" % (details[2], details[1]))
हालांकि, जब मैं इसे चलाने मैं निम्नलिखित त्रुटि मिलती है:
eval("%s = values[%d]" % (details[2], details[1]))
File "<string>", line 1
self.solar_z = values[1]
^
SyntaxError: invalid syntax
ऐसा क्यों है? self.solar_z
परिभाषित किया गया है, और बयान जो eval'd है सही दिखता है।
यह एक बुरा विचार है। यदि आपको तारों द्वारा मूल्यों को स्टोर करने की आवश्यकता है, तो 'dict' का उपयोग करें, गतिशील रूप से चर बनाने के लिए नहीं। यह कम से कम सरल है, * आपके * गुंजाइश के साथ पेंच नहीं करता है, संभावित सुरक्षा जोखिमों को जोड़ने की ज़रूरत नहीं है, तोड़ने के लिए बहुत कठिन है (उदाहरण के लिए, यह संभवतः सिंटैक्स त्रुटि उत्पन्न नहीं कर सकता) बेहतर प्रदर्शन करता है। - यह बस बेहतर है, और उस पर एक बड़े magin द्वारा। (और इसमें कार्यात्मक प्रोग्रामिंग के साथ कुछ लेना देना नहीं है।) – delnan
@ डेलनान: कारण यह है कि मैं इस तरह के चर का उपयोग कर रहा हूं कि मैं वर्ग के उपयोगकर्ताओं को कक्षा के रूप में चर के रूप में उपयोग करने की अनुमति देना चाहता हूं। class.dict ['variablename'] करें। – robintw
आप कक्षा में '__getattr__' विधि जोड़कर ऐसा कर सकते हैं। –