"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python 트릭: field(default_factory=...)와 함께 데이터 클래스 사용

Python 트릭: field(default_factory=...)와 함께 데이터 클래스 사용

2024-11-02에 게시됨
검색:671

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

Python의 데이터 클래스 모듈은 데이터 저장에 사용되는 클래스 생성을 단순화합니다.

대부분의 사람들이 기본 사용법을 알고 있지만, 변경 가능한 유형의 기본값을 처리하는 데 매우 유용할 수 있는 잘 알려지지 않은 기능 필드(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])

이 예에서 성적은 각각의 새 학생 인스턴스에 대해 빈 목록으로 초기화됩니다.
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