산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

Python 데이터 클래스:데이터를 저장하는 더 나은 방법

Python 데이터 클래스는 @dataclass이 있는 일반 Python 클래스입니다. 장식가. 데이터를 보관하기 위해 특별히 만들어졌습니다. Python 버전 3.7부터 Python은 dataclass이라는 내장 모듈을 통해 데이터 클래스를 제공합니다. . 이 기사에서 살펴볼 일반 Python 클래스에 비해 몇 가지 장점이 있습니다. 또한 예제 코드와 데이터 클래스로 수행할 수 있는 몇 가지 일반적인 작업을 살펴보겠습니다.

목차

<내비>

데이터 클래스 사용의 이점

일반 Python 클래스 대신 데이터 클래스를 사용해야 하는 이유는 무엇입니까? 먼저 Python 데이터 클래스가 제공하는 몇 가지 이점을 살펴보겠습니다.

최소한의 코드 필요

@dataclass 데코레이터는 보이는 코드를 추가하지 않고도 클래스에 많은 기능을 추가합니다. 이를 통해 데이터 클래스를 매우 컴팩트하게 만들면서도 많은 유용한 기능을 제공할 수 있습니다. 데이터를 보관할 필드를 정의하기만 하면 됩니다. 함수를 정의할 필요가 없습니다.

비교

두 개의 Python 데이터 클래스를 ==과 비교할 수 있습니다. 소위 dunder 메서드 __eq__가 자동으로 구현되기 때문입니다. 일반적으로 이 특별한 방법을 구현하는 모든 Python 개체를 동일한 유형의 다른 개체와 비교할 수 있습니다.

데이터 클래스 인쇄

마찬가지로 __repr__ 구현되면 데이터 클래스를 인쇄하고 멋지게 표현할 수 있습니다. 이것은 디버깅에 특히 유용합니다.

데이터 클래스에는 유형 힌트가 필요합니다.

데이터 클래스는 Python이 제공하는 새로운(ish) 유형 시스템을 중심으로 구축됩니다. 유형 힌트를 사용하면 코드에서 버그 및 예기치 않은 동작이 발생할 가능성이 줄어듭니다. 기본적으로 변수에 저장해야 하는 데이터 유형을 선언합니다.

파이썬 데이터 클래스 예시

다음은 직장 데이터 클래스의 예입니다.

from dataclasses import dataclass

@dataclass
class Card:
    rank: str
    suit: str
    
card1 = Card("Q", "hearts")
card2 = Card("Q", "hearts")

print(card1 == card2)
# True

print(card1.rank)
# 'Q'

print(card1)
Card(rank='Q', suit='hearts')

기본값

데이터 클래스는 기본값을 가질 수 있습니다. 기본값을 할당하는 것은 변수에 값을 할당하는 것만큼 간단합니다. 예를 들어 Card 클래스의 기본값이 Queen of Hearts를 갖도록 하려면 다음과 같이 하면 됩니다.

from dataclasses import dataclass

@dataclass
class Card:
    rank: str = 'Q'
    suit: str = 'hearts'

데이터 클래스를 JSON으로 변환

일반적인 사용 사례는 멋지게 구조화된 데이터 클래스를 JSON으로 변환하는 것입니다. 예를 들어 데이터를 데이터베이스로 내보내거나 브라우저로 보내려는 경우입니다. 나쁜 소식은 데이터 클래스를 JSON으로 변환하는 기본 제공 방법이 없다는 것입니다.

좋은 소식은 작업을 단순화하는 dataclasses-json이라는 Python 패키지가 있다는 것입니다. 그러나 추가 데코레이터가 필요합니다. pip install 명령이나 Pipenv와 같은 것을 사용하여 패키지를 설치해야 하며 가급적이면 가상 환경 내부에 설치해야 합니다. 예:

$ pip install dataclasses-json

다음은 패키지를 사용하는 방법의 예입니다.

from dataclasses import dataclass
from dataclasses_json import dataclass_json

@dataclass_json
@dataclass
class Card:
    rank: str = 'Q'
    suit: str = 'hearts'

card = Card()
print(card.to_json())
{"rank": "Q", "suit": "hearts"}

또 다른 방법은 Python 상속을 사용하고 JSONEncoder 클래스에서 상속하여 고유한 사용자 지정 인코더를 만드는 것입니다. 여기서 장점은 외부 패키지를 설치할 필요가 없다는 것입니다. 이 블로그 게시물에서 이 작업을 수행하는 방법을 배울 수 있습니다.

계속 학습


python

  1. 파이썬 데이터 유형
  2. Python 유형 변환 및 유형 캐스팅
  3. 파이썬 연산자
  4. Python 사용자 정의 예외
  5. 파이썬 객체 지향 프로그래밍
  6. 파이썬 상속
  7. 데이터 센터 통합이 데이터 저장 방식을 어떻게 변화시키고 있는지
  8. 예제가 있는 Python의 type() 및 isinstance()
  9. 자바 - 데이터 구조
  10. C++의 데이터 추상화