namedtuple 이란?
- 기존 tuple 이 가지는 값에 대한 접근성 및 (동일한 형태의) 튜플 반복 생성에 대한 불편함을 해소하는 모듈
장점 :
1) 값의 불변성을 가지는 튜플의 성격을 가지고 있음
2) 값에 대한 다양한 접근법을 가지고 있음
3) 클래스 객체처럼 사용가능
- 일반적인 튜플 사용법
# 일반적인튜플
pt1 = (1.0, 5.0)
print(pt1[0] + pt1[1])
- namedtuple 사용법
from collections import namedtuple
# 선언 및 생성방법1
# 첫번째 인자는 관례상 변수명과 동일하게 생성
Point1 = namedtuple('Point', ['x', 'y'])
p1 = Point1(x=10, y=35)
# 선언방법2
Point2 = namedtuple('Point', 'x,y')
p2 = Point2(20, 40)
# 선언방법3
Point3 = namedtuple('Point', 'xy')
temp_dict = {'x': 75, 'y': 55}
p3 = Point3(45, y=20) # 또는 p5 = Point3(**temp_dict)
# 선언방법4
# class는예약어, rename=True로하면 예약어 및 중복에 대해서 에러를 발생시키지않고 ,다른이름으로 생성해준다.
Point4 = namedtuple('Point', 'xy x class',
rename=True)
p4 = Point4(10, 20, 30, 40)
# 선언방법5
temp = [52, 38]
p4 = Point1._make(temp) # _make(): 새로운객체생성 -> List를 NameTuple에 넣을때 사용
# 생성
pt1 = Point(1.0, 5.0)
- 값 변경 (기존객체가 아닌 새로운 객체 반환)
print(p2._replace(y=100)) # 새로운 namedtuple 반환
'Python' 카테고리의 다른 글
추상화 클래스 (abstract class) (0) | 2020.03.23 |
---|---|
PEP8 이란? (0) | 2020.03.19 |
Instance(인스턴스) 메소드와 Class(클래스) 메소드 (0) | 2020.03.17 |
Pythonanywhere를 통하여, Django 앱을 서비스해보자 (0) | 2019.09.30 |
Lambda 함수를 통하여 Python 함수를 간단하게 만들자! (0) | 2019.06.20 |