파이썬에서 리스트를 상속받아 "명명된 자료구조(Named Data Structure)"를 만들 수 있습니다. 리스트는 순차적으로 데이터를 저장하는 자료구조이기 때문에, 이를 상속받아 각 항목을 이름을 통해 접근할 수 있는 자료구조를 만들면, 직관적인 데이터 관리를 할 수 있습니다. 리스트는 일반적으로 인덱스를 통해 데이터를 접근하지만, 명명된 자료구조를 사용하면 항목을 이름으로 접근할 수 있는 유연성을 얻을 수 있습니다.
예제: 리스트를 상속한 NamedList
클래스
이 예제에서는 리스트를 상속받아 각 항목에 이름을 부여하고, 이 이름을 통해 데이터를 조회하거나 수정할 수 있는 NamedList
클래스를 구현해 봅니다.
예제 코드:
# 리스트 상속하여 명명된 자료구조 정의
class NamedList(list):
def __init__(self, names, values):
# 리스트 초기화
super().__init__(values)
if len(names) != len(values):
raise ValueError("Names and values must have the same length.")
self.names = names # 각 항목의 이름 저장
# 이름을 사용하여 항목을 조회하는 메서드
def get_by_name(self, name):
if name in self.names:
index = self.names.index(name)
return self[index]
else:
raise KeyError(f"Name '{name}' not found.")
# 이름을 사용하여 항목을 수정하는 메서드
def set_by_name(self, name, value):
if name in self.names:
index = self.names.index(name)
self[index] = value
else:
raise KeyError(f"Name '{name}' not found.")
# 모든 이름과 값을 출력하는 메서드
def display(self):
for name, value in zip(self.names, self):
print(f"{name}: {value}")
# 사용 예제
# NamedList 객체 생성
person_info = NamedList(
names=["name", "age", "occupation"],
values=["John Doe", 30, "Engineer"]
)
# 이름을 사용하여 값 조회
print(f"Name: {person_info.get_by_name('name')}")
print(f"Age: {person_info.get_by_name('age')}")
print(f"Occupation: {person_info.get_by_name('occupation')}")
# 이름을 사용하여 값 수정
person_info.set_by_name("age", 31)
print(f"\nUpdated Age: {person_info.get_by_name('age')}")
# 모든 항목 출력
print("\nAll Info:")
person_info.display()
설명:
NamedList
클래스는list
를 상속받아, 기본적인 리스트의 기능을 유지하면서 각 항목에 이름을 부여하고, 이 이름을 통해 데이터를 관리할 수 있게 만듭니다.__init__()
메서드에서 리스트를 초기화하며,names
리스트는 각 항목의 이름을 저장하고,values
리스트는 해당 값들을 저장합니다.get_by_name()
메서드는 주어진 이름에 해당하는 값을 반환합니다.set_by_name()
메서드는 주어진 이름에 해당하는 값을 수정합니다.display()
메서드는 각 이름과 값의 쌍을 출력합니다.- 이름과 값의 리스트가 동일한 길이를 가져야 한다는 검사를 포함하고 있습니다.
실행 결과:
Name: John Doe
Age: 30
Occupation: Engineer
Updated Age: 31
All Info:
name: John Doe
age: 31
occupation: Engineer
주요 포인트:
NamedList
클래스는 리스트의 인덱스 기반 접근을 이름 기반 접근으로 변환하여, 더 직관적인 데이터 관리가 가능합니다.- 항목을 이름으로 조회하거나 수정할 수 있기 때문에, 코드를 작성할 때 가독성이 높아지고 유지보수가 쉬워집니다.
names
리스트와values
리스트의 길이가 일치해야 하며, 그렇지 않으면 오류를 발생시켜 데이터를 일관되게 관리합니다.
이와 같은 명명된 자료구조는 복잡한 데이터를 다룰 때 유용하며, 특히 구조적으로 관리해야 하는 상황에서 직관적인 접근 방식을 제공합니다.
'실용적인 자료구조' 카테고리의 다른 글
[실용적인 자료구조] 더블 언더 메소드와 그 역할 (0) | 2024.10.17 |
---|---|
[실용적인 자료구조] 이중 연결 리스트(Doubly Linked List) (0) | 2024.10.17 |
[실용적인 자료구조] Python의 `object` 클래스 1 (0) | 2024.10.17 |
[실용적인 자료구조] 딕셔너리 상속 명명된 자료구조 1 (0) | 2024.10.16 |
[실용적인 자료구조] 명명된 자료구조 1 (0) | 2024.10.15 |