„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann die gemeinsame Nutzung von Klassendaten zwischen Instanzen in Python verhindert werden?

Wie kann die gemeinsame Nutzung von Klassendaten zwischen Instanzen in Python verhindert werden?

Veröffentlicht am 22.12.2024
Durchsuche:844

How to Prevent Class Data Sharing Between Instances in Python?

So isolieren Sie Klassendaten für einzelne Instanzen

Um zu vermeiden, dass Klassendaten von mehreren Instanzen gemeinsam genutzt werden, und um sicherzustellen, dass jede Instanz ihre eigenen Daten verwaltet, Befolgen Sie diese Schritte:

Deklarieren Sie Variablen im Konstruktor (__init__ Methode)

Anstatt Variablen auf Klassenebene außerhalb einer Methode zu deklarieren, definieren Sie sie innerhalb der Konstruktormethode init. Zum Beispiel:

class a:
    def __init__(self):
        self.list = []  # Declared within __init__ to create instance-specific lists

Durch die Initialisierung der Liste in __init__ wird neben jeder neuen Instanz des Objekts eine neue Instanz der Liste erstellt.

Beispielcode:

class a:
    def __init__(self):
        self.list = []

x = a()
y = a()

x.list.append(1)
y.list.append(2)
x.list.append(3)
y.list.append(4)

print(x.list)  # prints [1, 3]
print(y.list)  # prints [2, 4]

In diesem Beispiel wird die Liste nicht mehr zwischen den beiden Instanzen (x und y) geteilt und jede Instanz verwaltet wie gewünscht ihre eigenen separaten Daten .

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3