반응형
[ Python 3 ] EasyDict 라이브러리 사용해보기!
EasyDict 라이브러리 설치
pip install easydict
EasyDict 역할
EasuDict 라이브러리는 딕셔너리(dict)의 value를 속성(attribute)처럼 재귀적으로 접근할 수 있게 만들어줍니다.
예시
일반적으로 파이썬의 딕셔너리 객체는 key를 통해 value을 불러옵니다.
>>> ex_dict = {'foo':3, 'bar':{'x':1, 'y':2}}
>>> ex_dict['foo']
3
그러나 dot(.) 을 통해서는 불러올 수 없습니다.
>>> ex_dict.foo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'dict' object has no attribute 'foo'
**Point 1) easydict 라이브러리의 EasyDict 을 이용하게 되면 value를 속성 값처럼 dot(.)을 통해 불러올 수 있습니다.
>>> from easydict import EasyDict
>>> easy_d = EasyDict({'foo':3, 'bar':{'x':1, 'y':2}})
>>> easy_d.foo
3
>>> easy_d.bar
{'x': 1, 'y': 2}
값 변경도 가능합니다.
>>> easy_d.foo = 55
>>> easy_d.foo
55
**Point 2) value를 dot(.)을 통해 재귀적으로 불러올 수 있습니다.
>>> easy_d.bar.x
1
>>> easy_d.bar.y
2
**Point 3) 구문 분석된 JSON 파일을 쉽게 이용할 수 있습니다.
>>> from easydict import EasyDict
>>> from simplejson import loads
>>> j = """{
... "Buffer": 12,
... "List1": [
... {"type" : "point", "coordinates" : [100.1,54.9] },
... {"type" : "point", "coordinates" : [109.4,65.1] },
... {"type" : "point", "coordinates" : [115.2,80.2] },
... {"type" : "point", "coordinates" : [150.9,97.8] }
... ]
... }"""
>>>
>>> ex_json_dict = EasyDict(loads(j))
>>> ex_json_dict.Buffer
12
>>> ex_json_dict.List1[0].type
'point'
>>> ex_json_dict.List1[2].coordinates
[115.2, 80.2]
>>> ex_json_dict.List1[2].coordinates[1]
80.2
**Point 4) 클래스 속성과 인스턴스 속성을 일반적인 객체에 접근하듯 쉽게 이용할 수 있습니다.
>>> class Person(EasyDict):
... name = "james"
...
>>> me = Person({'age':25})
>>> me
{'age': 25, 'name': 'james'}
>>> me.name
'james'
>>> me['name']
'james'
>>> me.age
25
>>> me['age']
25
인스턴스를 생성하면 인스턴스에서 클래스 속성을 참조하지 않고,
클래스 속성을 인스턴스 속성으로 새로 생성하여 사용하기 때문에 Person.name 을 변경해도 me.name은 변경되지 않습니다.
>>> Person.name is me.name
True
>>> Person.name = 'jane'
>>> Person.name is me.name
False
>>> Person.name
'jane'
>>> me.name
'james'
클래스 속성과 인스턴스 속성을 잘 모르시다면 아래글을 읽어보세요!
[ Python 3 ] 클래스(Class)를 제대로 알아보자! (인스턴스 속성, 클래스 속성, 메소드)
[ 참고 ]
https://pypi.org/project/easydict/
반응형