Python 的 dataclasses 模組簡化了用於儲存資料的類別的建立。
雖然大多數人都知道基本用法,但有一個鮮為人知的功能欄位(default_factory=...)對於處理可變類型中的預設值非常有用。
定義資料類別時,您可能想要使用可變的預設值,例如清單或字典。
由於跨實例共用預設參數的方式,直接使用可變預設值可能會導致意外行為。
default_factory 函數提供了一種處理可變預設值的簡潔方法。
這是一個簡單的例子:
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])
在此範例中,每個新 Student 實例的成績均使用空列表進行初始化。
使用 field(default_factory=list) 確保每個實例都有自己單獨的列表,避免共用可變預設值的陷阱。
default_factory 功能對於避免可變預設參數的常見問題非常有用。
它有助於確保資料類別的每個實例都有自己的預設值,使您的程式碼更具可預測性並避免與共用狀態相關的細微錯誤。
以上是Python 技巧:使用帶有欄位的資料類別(default_factory=...)的詳細內容。更多資訊請關注PHP中文網其他相關文章!