2015年9月3日木曜日

Python 構造体みたいなもの

サードパーティのライブラリを追加したりしながら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 件のコメント:

コメントを投稿