잠토의 잠망경

[python] namedtuple 본문

공부/Python

[python] namedtuple

잠수함토끼 2020. 6. 14. 15:06

기본 활용

클래스 같은 tuple형태이다.

tuple은 한번 적용하면 변경 불가한 const 같은 것으로

가독성을 위하여 namedtuple을 사용하는 것이다.

github

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에 해당 내용을 적용한다면 다음과 같다.

github

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

참고

Comments