>  기사  >  백엔드 개발  >  Python 트릭: field(default_factory=...)와 함께 데이터 클래스 사용

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

WBOY
WBOY원래의
2024-08-31 06:01:02818검색

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 기능은 변경 가능한 기본 인수와 관련된 일반적인 문제를 방지하는 데 매우 중요합니다.

이는 데이터 클래스의 각 인스턴스가 고유한 기본값을 갖도록 하여 코드를 더욱 예측 가능하게 만들고 공유 상태와 관련된 미묘한 버그를 방지하는 데 도움이 됩니다.

위 내용은 Python 트릭: field(default_factory=...)와 함께 데이터 클래스 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.