본문 바로가기

Computer/Python

collections 모듈 (1) - namedtuple

반응형

이번 포스트에서는 collections 파이썬 내장 모듈에 대해 알아보겠습니다. collections 모듈은 다양한 데이터 컨테이너 타입을 지원하는 모듈로 tuple, dict 와 같은 기존 데이터 타입의 확장된 타입을 지원하거나 추상화된 컨테이너 타입 또한 지원합니다. 이번 포스트에서는 collections 모듈에서 자주 쓰이는 컨테이너 타입인 namedtuple에 대해 알아보겠습니다.

namedtuple

namedtuple은 tuple의 subclass로서 tuple의 불변성과 클래스의 접근성을 동시에 갖춰 다양한 접근법을 지원하는 타입입니다. 공식문서 예제를 통해 한 번 살펴보고 namedtuple의 메소드들에 대해 알아보겠습니다.

  • namedtuple 선언 시 ['x', 'y']로 하였지만 'x y', 'x, y' 와 같은 방식으로 선언 가능합니다. 저는 ['x', 'y']가 명확해 보여서 이렇게 사용을 한 것이구요.
  • 기존 튜플은 인덱스로밖에 접근할 수 없었던 데 반해 namedtuple은 기존 인덱스 접근과 클래스의 attribute를 접근하는 것처럼 접근이 가능합니다.

  • namedtuple 선언 시 defaults 파라미터를 통해 default 값을 선언하는 것이 가능합니다. (파이썬 3.7 이상부터 지원합니다.)

_asdict()

OrderedDict() 객체를 return합니다.

_fields

namedtuple의 변수명을 return합니다.

_make()

namedtuple에서 생성된 객체를 가지고 새로운 namedtuple 객체를 만듭니다.

_replace()

namedtuple 객체 내의 값을 변경하여 새로운 namedtuple 객체를 return합니다. 튜플은 값의 변경이 되지 않아 원소 하나의 값을 바꾸기 위해선 원소 전체를 새로 선언해줘야 하는 점이 비추어보면 편리한 기능입니다.

 

홍머스 정리

  • 튜플 + 클래스
  • 작은 불변 데이터 클래스 (?)

참조

반응형