Python의 데이터 클래스

Vaibhav Vaibhav 2022년3월21일
Python의 데이터 클래스

Python 또는 다른 프로그래밍 언어에서 볼 수 있는 일반 클래스는 엔터티를 나타내도록 설계되었습니다. 그것들은 엔터티를 나타내기 때문에 많은 기능, 논리 및 속성으로 채워져 있으며 각 기능은 특정 작업을 수행하고 클래스 속성은 클래스 기능을 사용하여 조작됩니다.

일반 클래스 외에도 데이터 클래스라는 또 다른 유형의 클래스가 있습니다. 이 기사에서는 Python뿐만 아니라 다른 프로그래밍 언어에서도 볼 수 있는 데이터 클래스에 대해 설명합니다.

파이썬 데이터 클래스

이러한 일반 클래스와 달리 데이터 클래스는 엔터티의 상태를 저장하는 데 적합합니다. 그들은 많은 논리를 포함하지 않습니다. 개체 또는 엔터티의 통계를 나타내는 일부 데이터를 저장합니다.

예제를 통해 데이터 클래스를 더 잘 이해합시다. 예를 들어, 당신은 옷가게에서 장바구니의 동작을 모방하려고 시도하는 프로그램을 작성하고 있습니다. 장바구니는 제품이나 옷을 담을 것입니다. 의류에는 Headwear, TopwearBottomwear의 세 가지 유형이 있습니다. 모든 성별이 모든 천을 입을 수 있는 것은 아니므로 천이 제조되는 성별에 대한 정보도 있습니다. Male, Femaile, Netral (둘 다 착용 가능) 의 세 가지 범주만 고려합시다. 모든 제품에는 이름, 가격, 크기 및 제조 회사가 있습니다.

이제 장바구니를 모방하는 프로그램을 만들어야 하는 경우 ShoppingCartProduct라는 두 가지 클래스를 만들 수 있습니다. 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__ 함수를 구현할 수도 있습니다.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

관련 문장 - Python Class

관련 문장 - Python Dataclass