728x90
반응형
파이썬의 듀플은 수정불가다.
그래도 할 수 있다. 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 |
댓글