본문 바로가기
파이썬

파이썬에 가변 명명 된 튜플이 있습니까?

by º기록 2020. 11. 27.
반응형


주로 가독성을 위해 다음을 수행하는 namedtuple과 유사한 것을 원합니다.

from Camelot import namedgroup

Point = namedgroup('Point', ['x', 'y'])
p = Point(0, 0)
p.x = 10

>>> p
Point(x=10, y=0)

>>> p.x *= 10
Point(x=100, y=0)

결과물을 피클 할 수 있어야합니다. 그리고 명명 된 튜플의 특성에 따라 표현 될 때 출력의 순서는 객체를 구성 할 때 매개 변수 목록의 순서와 일치해야합니다.

 

해결 방법

 


namedtuple 과 동일한 API 및 메모리 풋 프린트를 가지며 할당을 지원합니다 (더 빠를 것입니다). 예를 들면 :

from recordclass import recordclass

Point = recordclass('Point', 'x y')

>>> p = Point(1, 2)
>>> p
Point(x=1, y=2)
>>> print(p.x, p.y)
1 2
>>> p.x += 2; p.y += 3; print(p)
Point(x=3, y=5)

Python 3.6 이상 recordclass (0.5 이후)의 경우 typehints를 지원합니다.

from recordclass import recordclass, RecordClass

class Point(RecordClass):
   x: int
   y: int

>>> Point.__annotations__
{'x':int, 'y':int}
>>> p = Point(1, 2)
>>> p
Point(x=1, y=2)
>>> print(p.x, p.y)
1 2
>>> p.x += 2; p.y += 3; print(p)
Point(x=3, y=5)



 

참조 페이지 https://stackoverflow.com/questions/29290359

 

 

반응형

댓글