본문 바로가기
Programming/Python

NamedTuple 초기화 이후 수정하는 방법

by Chan_찬 2020. 12. 11.
728x90
반응형

namedtuple

파이썬의 듀플은 수정불가다.
그래도 할 수 있다. None을 default 값으로 하고, 초기화 이후에 수정하는 방법이다

namedtuple 의 _replace() 을 사용하면 된다.
_replace 가 수정 후 새로운 namedtuple을 리턴하기 때문에 재할당 해줘야한다.

tp._replace(title='reset')

import collections

fields = "dag task_id flag puller jandi_url jandi_title jandi_color jandi_info"
JandiInfo = collections.namedtuple("JandiInfo", fields)
JandiInfo.__new__.__defaults__ = (None,) * len(fields.split(" "))

# namedtuple 초기화
info = JandiInfo(task_id='jandi_task', flag=True)

info
# task_id, flag 외는 전부 None으로 셋
JandiInfo(dag=None, task_id='jandi_task', flag=True, puller=None, jandi_url=None, jandi_title=None, jandi_color=None, jandi_info=None)


# 파라미터값 수정 '_replace', task_id, jandi_title 수정
info = info._replace(task_id='update_jandi_task',jandi_title='hahah')

info
# task_id, jandi_title 이 수정된 것을 확인
JandiInfo(dag=None, task_id='update_jandi_task', flag=True, puller=None, jandi_url=None, jandi_title='hahah', jandi_color=None, jandi_info=None)
728x90
728x90
BIG

'Programming > Python' 카테고리의 다른 글

try except를 깔끔하게 사용하기 - suppress  (0) 2023.01.31
datetime, str, timestamp 변환  (0) 2021.01.13
Class, Object - 클래스, 객체  (0) 2020.10.16
exception - 예외처리  (0) 2020.10.13
Serialization, pickling - 직렬화  (0) 2020.10.07
Buy me a coffeeBuy me a coffee

댓글