2016-04-01 8 views
1

Ich entwickle eine Automatisierung, die auf einigen Speichergeräten eine Verbindung zu einem REST-Dienst herstellt. Der REST-Service gibt Daten im JSON-Format zurück, die gut mit Python funktionieren.So nehmen Sie ein JSON-Objekt aus einem REST-Aufruf und füllen eine Klasse

Ich habe die folgende Klasse (hier vereinfacht), die die REST-Abfrage in sich selbst führt und ordnet sie dann auf Klassenvariablen:

class myclass(object): 
    def __init__(self, client): 
     # my rest code <SNIPPED> 
     self.data = myresults.data() # data is now a dictionary with my rest results 

     # I now want to break data{} down into individual self.XXXX variables 
     self.var1  = self.data['var1'] 
     self.var2  = self.data['var2'] 

Gibt es einen Trick, um dies es ohne „zwingt brute“ zu tun, wie mein Beispiel oben? Dieses Diktat enthält einige Schlüssel. Die meisten sind numerisch und werden an Berechnungen beteiligt sein und mit der Notation von Diktaten ziemlich klobig werden.

Oder gibt es einen besseren Ansatz als das, was ich versuche zu tun? es auf diese Weise tun, löst nicht wirklich das, was ich erreichen möchte:

kann
self.data{} = None 
self.data = myresults.data() 

Antwort

1

Sie setattr auf eine Instanz der Klasse.

for (key, value) in self.data: 
    setattr(self, key, value) 
+0

Ich habe tatsächlich gefunden, wonach ich gesucht habe und will mich jetzt immer wieder treten, weil ich das nicht früher gefunden habe. (self .__ dict__ = self.rawdata) Was Sie jedoch anbieten, ist auch an anderen Stellen nützlich, also werde ich Ihre Antwort akzeptieren! Danke! – BenH

Verwandte Themen