<Python>getattr

2017/11/14

組み込み関数 getattr
オブジェクト object を第1引数、
アトリビュート attribute を第2引数にして、値をゲットする。

アトリビュートを.で指定するのと何が違ってメリットがあるのかと思っていたら、
第2引数を変数にできるのがうれしいっぽい。

例。

In [1]: class Aaa():
   ...:     def __init__(self):
   ...:         self.x = 1
   ...:         self.y = 2
   ...:     def show_x(self):
   ...:         return self.x
   ...:     def show_y(self):
   ...:         return self.y
   ...:

In [2]: A = Aaa()

In [3]: getattr(A, show_x)
Out[3]: <bound method Aaa.show_x of <__main__.Aaa object at 0x000001B36A8AE748>>

In [4]: getattr(A, show_x)()
Out[4]: 1

In [5]: getattr(A, show_y)()
Out[5]: 2

で、show_xを変数にする。

In [7]: a = show_x

In [8]: getattr(A, a)()
Out[8]: 1

なるへそ。

マニュアル。

2. 組み込み関数 — Python 3.5.1 ドキュメント