サードパーティのライブラリを追加したりしながらPythonに触れていて
ふと、構造体のようなものはないかとインターネットで検索していたら
「名前付きタプル」がヒットした。
とりあえず、座標値を表すPositionを考えて試してみると
>>> from collections import namedtuple
>>>
>>> pos = namedtuple('Position', 'x y z')
>>>
>>> p1 = pos(x=100, y=200, z=300)
>>>
>>> print p1.x, p1.y, p1.z
100 200 300
>>>
print部分で書いているように、ピリオドに続けてxやy,zを書くことで値にアクセスする事ができる
あくまでタプルなので、以下のように値を変更する事はできない
>>> p1.x += 10
AttributeError: can't set attribute
元の「構造体」という点から考えれば、100点満点とは言えないかもしれないけれど
「名前付きタプル」そのものは便利な仕組みだと思えました。
-----
typeを確認してみると
>>> print type(p1)
<class '__main__.Position'>
0 件のコメント:
コメントを投稿