Python의 데이터 클래스
![Python의 데이터 클래스](/img/Python/ag-feature-image---python-dataclass.webp)
Python 또는 다른 프로그래밍 언어에서 볼 수 있는 일반 클래스는 엔터티를 나타내도록 설계되었습니다. 그것들은 엔터티를 나타내기 때문에 많은 기능, 논리 및 속성으로 채워져 있으며 각 기능은 특정 작업을 수행하고 클래스 속성은 클래스 기능을 사용하여 조작됩니다.
일반 클래스 외에도 데이터 클래스라는 또 다른 유형의 클래스가 있습니다. 이 기사에서는 Python뿐만 아니라 다른 프로그래밍 언어에서도 볼 수 있는 데이터 클래스에 대해 설명합니다.
파이썬 데이터 클래스
이러한 일반 클래스와 달리 데이터 클래스는 엔터티의 상태를 저장하는 데 적합합니다. 그들은 많은 논리를 포함하지 않습니다. 개체 또는 엔터티의 통계를 나타내는 일부 데이터를 저장합니다.
예제를 통해 데이터 클래스를 더 잘 이해합시다. 예를 들어, 당신은 옷가게에서 장바구니의 동작을 모방하려고 시도하는 프로그램을 작성하고 있습니다. 장바구니는 제품이나 옷을 담을 것입니다. 의류에는 Headwear
, Topwear
및 Bottomwear
의 세 가지 유형이 있습니다. 모든 성별이 모든 천을 입을 수 있는 것은 아니므로 천이 제조되는 성별에 대한 정보도 있습니다. Male
, Femaile
, Netral
(둘 다 착용 가능) 의 세 가지 범주만 고려합시다. 모든 제품에는 이름, 가격, 크기 및 제조 회사가 있습니다.
이제 장바구니를 모방하는 프로그램을 만들어야 하는 경우 ShoppingCart
와 Product
라는 두 가지 클래스를 만들 수 있습니다. ShoppingCart
클래스는 제품 추가 및 제거, 제품 수 조작, 장바구니 내부에 있는 제품 추적 등과 같은 모든 논리를 보유합니다. 단일 제품은 Product
클래스로 표시됩니다. Product
는 데이터 클래스이며 제품을 나타낼 뿐입니다.
Product
클래스는 다음과 같습니다.
class Product:
"""
A class representing a product
"""
def __init__(self, name, price, size, company, wearType, gender):
self.name = name
self.price = price
self.size = size
self.company = company
self.wearType = wearType
self.gender = gender
def __hash__(self):
"""
Returns a hash code for the class object
"""
return hash(
(self.name, self.price, self.size, self.company, self.wearType, self.gender)
)
def __eq__(self, other):
"""
Checks weather two objects are equal or not
"""
if not isinstance(other, Product):
return False
else:
return (
self.name,
self.price,
self.size,
self.company,
self.wearType,
self.gender,
) == (
other.name,
other.price,
other.size,
other.company,
other.wearType,
other.gender,
)
보시다시피 Product
클래스에는 논리가 없습니다. 제품을 나타내는 것뿐입니다. 이것이 데이터 클래스의 모습이며 속성과 최소한의 논리입니다.
데이터 클래스를 해시 가능하게 하려면 구현된 두 함수가 필요합니다. 클래스가 해시 가능하면 해당 개체를 사전에서 키로 사용할 수 있고 고정 값에 매핑할 수 있습니다. 값을 매핑하려면 해시 코드가 필요하기 때문에 이 두 기능은 필수적입니다.
클래스 개체의 문자열 표현을 반환하는 특정 메서드인 __repr__
함수를 구현할 수도 있습니다.