간단한 Named Tuple 구현하기

PythonBeginner
지금 연습하기

소개

이 프로젝트에서는 Python 에서 간단한 named tuple 을 구현하는 방법을 배우게 됩니다. Named tuple 은 위치 인덱싱과 속성 이름을 모두 사용하여 데이터에 접근할 수 있는 데이터 구조로, 구조화된 데이터를 보다 직관적이고 읽기 쉬운 방식으로 다룰 수 있도록 합니다.

👀 미리보기

## Output

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • 내장 tuple 클래스를 상속하는 NamedTuple 클래스를 만드는 방법
  • 원하는 기능을 달성하기 위해 __init__, __new__, __getitem__, 및 __repr__ 메서드를 구현하는 방법
  • 위치 인덱싱과 속성 이름을 모두 사용하여 데이터에 접근하는 방법
  • NamedTuple 인스턴스를 읽기 쉬운 형식으로 표현하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 할 수 있습니다:

  • named tuple 의 개념과 장점을 이해합니다.
  • Python 에서 간단한 named tuple 클래스를 구현합니다.
  • named tuple 을 사용하여 구조화된 데이터를 보다 직관적인 방식으로 접근하고 표현합니다.

NamedTuple 클래스 구현하기

이 단계에서는 위치 인덱싱과 속성 이름을 모두 사용하여 데이터에 접근할 수 있는 NamedTuple 클래스를 구현하는 방법을 배우게 됩니다.

  1. 코드 편집기에서 namedtuple.py 파일을 엽니다.
  2. tuple 클래스를 상속하는 NamedTuple 클래스를 정의합니다.
  3. __init__ 메서드에서 두 개의 매개변수를 받습니다: iterable (데이터) 및 fields (데이터의 이름).
  4. iterablefields를 각각 인스턴스 변수 self.dataself.fields로 저장합니다.
  5. for 루프를 사용하여 fields를 반복하고 각 필드를 NamedTuple 인스턴스의 속성으로 설정하여 self.data에서 해당 값을 할당합니다.
  6. NamedTuple 클래스의 새 인스턴스를 생성하기 위해 __new__ 메서드를 구현합니다. 이 메서드는 tuple 클래스의 __new__ 메서드를 호출하고 새 인스턴스를 반환해야 합니다.
  7. 위치 인덱싱과 속성 이름을 모두 사용하여 데이터에 접근할 수 있도록 __getitem__ 메서드를 구현합니다. 인덱스가 문자열인 경우 self.fields에서 해당 필드의 인덱스를 찾고 self.data에서 값을 반환합니다.
  8. NamedTuple 인스턴스를 NamedTuple(x=1, y=2) 형식으로 문자열 표현을 반환하기 위해 __repr__ 메서드를 구현합니다. 여기서 xy는 필드 이름이고 12는 해당 값입니다.

완성된 NamedTuple 클래스는 다음과 같아야 합니다:

class NamedTuple(tuple):
    def __init__(self, iterable, fields):
        self.data = iterable
        self.fields = tuple(fields)
        for i, attr in enumerate(self.fields):
            setattr(self, attr, self.data[i])

    def __new__(cls, iterable, fields):
        return super().__new__(cls, iterable)

    def __getitem__(self, index):
        if isinstance(index, str):
            index = self.fields.index(index)
        return self.data[index]

    def __repr__(self):
        return f"NamedTuple({', '.join(f'{field}={self[field]}' for field in self.fields)})"
✨ 솔루션 확인 및 연습

NamedTuple 클래스 테스트하기

이 단계에서는 이전 단계에서 구현한 NamedTuple 클래스를 테스트합니다.

  1. namedtuple.py 파일의 끝에 다음 코드를 추가합니다:
if __name__ == "__main__":
    ## Example usage:
    testData = [1, 2]
    fields = ["x", "y"]
    t = NamedTuple(testData, fields)
    print(t)  ## Output: NamedTuple(x=1, y=2)
    print(t[1])  ## Output: 2
    print(t.x)  ## Output: 1
  1. namedtuple.py 파일을 저장합니다.
  2. 터미널 또는 명령 프롬프트를 열고 namedtuple.py 파일이 있는 디렉토리로 이동합니다.
  3. 다음 명령을 실행하여 스크립트를 실행합니다:
python3 namedtuple.py

다음과 같은 출력을 볼 수 있습니다:

NamedTuple(x=1, y=2)
2
1

이는 NamedTuple 클래스가 예상대로 작동하여 위치 인덱싱과 속성 이름을 모두 사용하여 데이터에 접근할 수 있음을 보여줍니다.

축하합니다! Python 에서 간단한 named tuple 을 성공적으로 구현했습니다.

✨ 솔루션 확인 및 연습

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.