」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Python 技巧:使用帶有欄位的資料類別(default_factory=...)

Python 技巧:使用帶有欄位的資料類別(default_factory=...)

發佈於2024-11-02
瀏覽:967

Python Trick: Using dataclasses with field(default_factory=...)

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 功能對於避免可變預設參數的常見問題非常有用。

它有助於確保資料類別的每個實例都有自己的預設值,使您的程式碼更具可預測性並避免與共用狀態相關的細微錯誤。

版本聲明 本文轉載於:https://dev.to/devasservice/python-trick-using-dataclasses-with-fielddefaultfactory-4159?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3