Mir wurde gesagt, dass ich vermeiden sollte, self.__dict__
in meinem Code zu verwenden, aber ich kann nicht anders herum finden für das, was ich versuche zu tun. Ich fange gerade an, mit Klassen zu arbeiten, also nicht so sicher, wie man das macht.So vermeiden Sie die Verwendung von selbst .__ dict__ in einer Klasse
class variable(object):
def __init__(self, json_fn, *args, **kwargs):
self.metrics = self.getmetrics(json_fn)
for metric in self.metrics :
self.__dict__[metric] = self.get_metric_dataframes(metric)
def get_metric_dataframes(self , metric_name):
'''extract and return the dataframe for a metric'''
Also mein Objekt "Variable" hat verschiedene Datenrahmen für verschiedene Metriken im JSON gespeichert. Ich wollte tun variable.temperature zu können, variable.pressure, variable.whatever ohne schreiben:
allself.temperature = self.get_metric_dataframes(temperature)
self.pressure = self.get_metric_dataframes(pressure)
self.whatever = self.get_metric_dataframes(whatever)
Da der Datenrahmen mit der gleichen Funktion der Metrik als Argument nehmen extrahiert werden. Welches ist, warum ich durch die Metriken geschlungen und verwenden
self.__dict__[metric] = self.get_metric_dataframes(metric)
Zu wissen, So dass ich nie eine dieser Datenrahmen aktualisieren (ich benutze eine Kopie davon in dem Code, wollen aber nicht die Werte der aktualisieren Objekt).
Gibt es eine andere Lösung?
Der andere Weg wäre ich tun könnte eine Dictionnary mit all metrischen als Schlüssel und Datenrahmen als Wert und speichern sie in self.metric
zu bauen, kann ich es dann mit object.metric['temperature']
nennen, aber ich würde object.temperature
sofort lieber tun, und ich bin irgendwie neugierig, ob das möglich ist.
Vielen Dank für Ihre Hilfe!
Sie könnten fähig, 'setattr()' zu verwenden, aber ich bin nicht sicher, warum dir gesagt wurde, 'self .__ dict__' zu vermeiden. – kindall