본문 바로가기
Python

Python 매직메서드인 __getitem__과 __setitem__을 이용해 클래스를 딕셔너리나 리스트처럼 이용해보자.

by 앵남(Andy) 2022. 3. 9.

글 개요

python으로 개발을 진행하다보면, class에서 python dict나 list처럼 사용하고 싶을 때가 있습니다. python의 매직메서드인 __getitem__과 __setitem__ 메서드를 이용하면 클래스를 dict or list처럼 사용할 수 있습니다. 

 

글  본문

만약에 클래스를 이용해서 딕셔너리를 어떻게 생성을 어떻게 할까요? 

class User:
    def __init__(self):
        self.name = {}

    def get_name(self, index, key):
        self.name[index] = key

    def call_name(self, index):
        return self.name[index]

person1 = User()
person1.get_name(0, "andy")
person1.get_name(1, "json")
person1.get_name(2, "ham")
print(person1.name)
print(person1.call_name(0))
  • user class를 하나 만들고 딕셔너리에 추가하는 method를 하나 만들고 불러오는 method를 하나 만들어 줘야합니다.
  • 그리고 사용하려면 클래스를 선언하여 해당 method를 이용하여 데이터를 추가해줘야 합니다. 

위 방법도 개발하면 좋겠지만, python에 매직 method인 __getitem__과 __setitem__을 이용하면 조금 더 쉽게 개발할 수 있습니다. 

class User:

    def __init__(self):
        self.name = {}

    def __getitem__(self, item):
        return self.name[item]

    def __setitem__(self, key, value):
        self.name[key] = value
person1 = User()
person1[0] = "andy"
person1[1] = "json"
person1[2] = "ham"
print(person1.name)
print(person1[0])
  • User class를 선언해주고 바로 딕셔너리에 데이터를 추가할 수 있습니다. 또한 index를 이용해서 데이터를 바로 조회할 수 있습니다.

 

'Python' 카테고리의 다른 글

Python Decorator를 사용해서 기존함수를 변경해보자.  (0) 2022.07.24
파이썬 - 패키지  (0) 2021.10.11
파이썬 - 전역변수 __name__  (0) 2021.10.11
파이썬 - 모듈  (0) 2021.10.11
파이썬 - 다양한 함수  (0) 2021.10.11

댓글