<Python, class> __dict__で少し遊ぶ。

class.__dict__で少し遊んでみた。

Pythonさんだと、class作成時にインスタンス変数instance variableを準備しなくても、後付けで追加可能とのこと。

クラス作成+インスタンス作成。

In [46]: class Hage():
    ...:     def __init__(self, name):
    ...:         self.name = name
    ...:         

In [49]: hage = Hage('Taro')

で、.__dict__する。と、インスタンスで持っている、dictが出てくる。こりゃ便利。

In [50]: hage.__dict__
Out[50]: {'name': 'Taro'}

で、後付けで変数追加。

In [51]: hage.looks = 'Turupika'

In [52]: hage.__dict__
Out[52]: {'looks': 'Turupika', 'name': 'Taro'}

いいねー。
関数も後付け可能とのこと。

In [58]: def flash2(self):
    ...:     print('Flash2!')
    ...:     

In [59]: Hage.flash2 = flash2

In [60]: hage.flash2()
Flash2!

In [63]: hage.__dict__
Out[63]: {'flash': <function __main__.flash>, 'looks': 'Turupika', 'name': 'Taro'}

要素削るのは、.__delattr__

In [64]: hage.__delattr__('looks')

In [65]: hage.__dict__
Out[65]: {'flash': <function __main__.flash>, 'name': 'Taro'} 

なるほどねー。

参考にさせてもらいました。
y0m0r.hateblo.jp