Ich habe eine Python-Klasse, die auf einen großen Datensatz verweisen muss. Ich muss Tausende von Instanzen der Klasse erstellen, damit ich den Datensatz nicht jedes Mal laden möchte. Es wäre einfach, die Daten in einer anderen Klasse zu setzen, die ersten und die andere als Argument übergeben erstellt werden muss:Python - Daten auf der ersten Instanz der Klasse laden
class Dataset():
def __init__(self, filename):
# load dataset...
class Class_using_dataset():
def __init__(self, ds)
# use the dataset and do other stuff
ds = Dataset('file.csv')
c1 = Class_using_dataset(ds)
c2 = Class_using_dataset(ds)
# etc...
Aber ich will nicht mein Benutzer mit dem Datensatz zu tun zu haben, da es ist immer dasselbe, wenn ich es einfach im Hintergrund machen kann.
Gibt es eine pythonische/kanonische Methode, um die Daten in einen globalen Namespace zu laden, wenn ich die erste Instanz meiner Klasse erstelle? Ich hoffe auf etwas wie:
class Class_using_dataset():
def __init__(self):
if dataset doesn't exist:
load dataset into global namespace
use dataset
Nicht. Machen Sie 'Class_using_dataset' zu einer Methode des Datasets oder einer Klassenmethode von' Class', die ein Dataset übernimmt. In beiden Fällen können Sie eine Abschluss- oder gebundene Methode verwenden, um die Kosten zu entfernen, während die Dinge lokal bleiben. Globale Variablen sind schlecht. – Veedrac