공부/Python
[python] namedtuple
잠수함토끼
2020. 6. 14. 15:06
기본 활용
클래스 같은 tuple형태이다.
tuple은 한번 적용하면 변경 불가한 const 같은 것으로
가독성을 위하여 namedtuple을 사용하는 것이다.
code
from collections import namedtuple
CTest = namedtuple("CTest", "row col num num1")
test01 = CTest(1,2,3,4)
print('row: {0}, col: {1}, num: {2}, num1: {3}'.format(test01.row, test01.col, test01.num, test01.num1))
# tuple 이기때문에 변경은 안된다.
test01.row = 10
print('row: {0}, col: {1}, num: {2}, num1: {3}'.format(test01.row, test01.col, test01.num, test01.num1))
결과
Traceback (most recent call last):
File "C:/Users/mellowlee/Project_Deep_Learning_And_The_Game_Of_Go/sample/sample_namedtuple.py", line 14, in <module>
test01.row = 10
AttributeError: can't set attribute
row: 1, col: 2, num: 3, num1: 4
class에서 활용
class에 해당 내용을 적용한다면 다음과 같다.
code
from collections import namedtuple
class Point(namedtuple('Point', 'row col')):
def neighbors(self):
return[
Point(self.row-1, self.col),
Point(self.row, self.col-1)
]
point = Point(10, 11)
for item in point.neighbors():
print('row:{0}, col:{1}'.format(item.row, item.col))
결과
row: 1, col: 2, num: 3, num1: 4
row:9, col:11
row:10, col:10