소개
이 프로젝트에서는 Python 에서 간단한 named tuple 을 구현하는 방법을 배우게 됩니다. Named tuple 은 위치 인덱싱과 속성 이름을 모두 사용하여 데이터에 접근할 수 있는 데이터 구조로, 구조화된 데이터를 보다 직관적이고 읽기 쉬운 방식으로 다룰 수 있도록 합니다.
👀 미리보기
## Output
🎯 과제
이 프로젝트에서 다음을 배우게 됩니다:
- 내장
tuple클래스를 상속하는NamedTuple클래스를 만드는 방법 - 원하는 기능을 달성하기 위해
__init__,__new__,__getitem__, 및__repr__메서드를 구현하는 방법 - 위치 인덱싱과 속성 이름을 모두 사용하여 데이터에 접근하는 방법
NamedTuple인스턴스를 읽기 쉬운 형식으로 표현하는 방법
🏆 성과
이 프로젝트를 완료하면 다음을 할 수 있습니다:
- named tuple 의 개념과 장점을 이해합니다.
- Python 에서 간단한 named tuple 클래스를 구현합니다.
- named tuple 을 사용하여 구조화된 데이터를 보다 직관적인 방식으로 접근하고 표현합니다.
NamedTuple 클래스 구현하기
이 단계에서는 위치 인덱싱과 속성 이름을 모두 사용하여 데이터에 접근할 수 있는 NamedTuple 클래스를 구현하는 방법을 배우게 됩니다.
- 코드 편집기에서
namedtuple.py파일을 엽니다. tuple클래스를 상속하는NamedTuple클래스를 정의합니다.__init__메서드에서 두 개의 매개변수를 받습니다:iterable(데이터) 및fields(데이터의 이름).iterable과fields를 각각 인스턴스 변수self.data와self.fields로 저장합니다.for루프를 사용하여fields를 반복하고 각 필드를NamedTuple인스턴스의 속성으로 설정하여self.data에서 해당 값을 할당합니다.NamedTuple클래스의 새 인스턴스를 생성하기 위해__new__메서드를 구현합니다. 이 메서드는tuple클래스의__new__메서드를 호출하고 새 인스턴스를 반환해야 합니다.- 위치 인덱싱과 속성 이름을 모두 사용하여 데이터에 접근할 수 있도록
__getitem__메서드를 구현합니다. 인덱스가 문자열인 경우self.fields에서 해당 필드의 인덱스를 찾고self.data에서 값을 반환합니다. NamedTuple인스턴스를NamedTuple(x=1, y=2)형식으로 문자열 표현을 반환하기 위해__repr__메서드를 구현합니다. 여기서x와y는 필드 이름이고1과2는 해당 값입니다.
완성된 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 클래스를 테스트합니다.
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
namedtuple.py파일을 저장합니다.- 터미널 또는 명령 프롬프트를 열고
namedtuple.py파일이 있는 디렉토리로 이동합니다. - 다음 명령을 실행하여 스크립트를 실행합니다:
python3 namedtuple.py
다음과 같은 출력을 볼 수 있습니다:
NamedTuple(x=1, y=2)
2
1
이는 NamedTuple 클래스가 예상대로 작동하여 위치 인덱싱과 속성 이름을 모두 사용하여 데이터에 접근할 수 있음을 보여줍니다.
축하합니다! Python 에서 간단한 named tuple 을 성공적으로 구현했습니다.
요약
축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



