import json
xyz={"john": """{"name": "john","id":"123"}""","tom" : """{"name":"tom","id":"456"}"""}
class abc(object):
def __init__ (self,**d):
self.name=d['name'];
self.id=d['id'];
def main():
ks=xyz.keys()
for j in ks:
lm1="xyz['%s']" %(j)
ds=eval(lm1);
ds1=json.loads(ds)
ln="%s=abc(**ds1)" %(j)
print(ln)
exec(ln);
ln2="%s.name" %(j)
print(eval(ln2));
print(john.name)
print(tom.id)
if __name__ == "__main__":
main();
und der Fehler wirdObjekt nicht außerhalb der Schleife in Python definiert ist
tom=abc(**ds1)
tom
john=abc(**ds1)
john
Traceback (most recent call last):
File "new6.py", line 26, in <module>
main();
File "new6.py", line 22, in main
print(john.name)
NameError: name 'john' is not defined
warum bin ich nicht in der Lage zu sein für den Zugriff auf "tom.name", "john.name" in main() Block? wo habe ich falsch gemacht? und wie kann es auf viel einfachere Weise gemacht werden? (Ich habe tatsächlich eine JSON-Datei, nicht viel über die "XYZ")
@khelwood Fehler beim Aufstellen der Frage ... es ist mein erstes Mal –
Für mich funktioniert das Programm gut, wie es ist. No NameError wenn ich es ausführe. – Humbalan
Kann sein, weil Sie es in python2. * Laufen lassen, ich will es in 3. * –