<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