Das Dataclasses-Modul von Python vereinfacht die Erstellung von Klassen, die zum Speichern von Daten verwendet werden.
Während die meisten Leute über die grundlegende Verwendung Bescheid wissen, gibt es ein weniger bekanntes Funktionsfeld (default_factory=...), das für die Handhabung von Standardwerten in veränderlichen Typen unglaublich nützlich sein kann.
Beim Definieren einer Datenklasse möchten Sie möglicherweise einen veränderlichen Standardwert verwenden, beispielsweise eine Liste oder ein Wörterbuch.
Die direkte Verwendung eines veränderlichen Standardwerts kann aufgrund der Art und Weise, wie Standardargumente in allen Instanzen gemeinsam genutzt werden, zu unerwartetem Verhalten führen.
Die Funktion „default_factory“ bietet eine saubere Möglichkeit, mit veränderlichen Standardwerten umzugehen.
Hier ist ein einfaches Beispiel:
from dataclasses import dataclass, field from typing import List @dataclass class Student: name: str grades: List[int] = field(default_factory=list) # Use default_factory for mutable default # Create new Student instances student1 = Student(name="Alice") student2 = Student(name="Bob", grades=[90, 85]) # Modify student1's grades student1.grades.append(95) print(student1) # Output: Student(name='Alice', grades=[95]) print(student2) # Output: Student(name='Bob', grades=[90, 85]) # Output: # Student(name='Alice', grades=[95]) # Student(name='Bob', grades=[90, 85])
In diesem Beispiel werden die Noten für jede neue Student-Instanz mit einer leeren Liste initialisiert.
Durch die Verwendung von field(default_factory=list) wird sichergestellt, dass jede Instanz ihre eigene separate Liste erhält, wodurch die Fallstricke gemeinsamer änderbarer Standardeinstellungen vermieden werden.
Die Funktion „default_factory“ ist von unschätzbarem Wert, um häufige Probleme mit veränderlichen Standardargumenten zu vermeiden.
Es hilft sicherzustellen, dass jede Instanz einer Datenklasse ihren eigenen Standardwert hat, wodurch Ihr Code vorhersehbarer wird und subtile Fehler im Zusammenhang mit dem gemeinsamen Status vermieden werden.
Das obige ist der detaillierte Inhalt vonPython-Trick: Datenklassen mit field(default_factory=...) verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!