進捗
3/11 14:15~17:00 p.292~p.293
- getattrについて参考になるサイト
- https://qiita.com/fumitoh/items/b090ae6ccd52e6a88d9e
- http://nekoyukimmm.hatenablog.com/entry/2016/04/17/220745
値を参照する関数getattr関数の書き方。getattr(インスタンス,'メソッド名')()で戻り値を返す。
getattr(インスタンス,'アトリビュート名')でアトリビュートの中身を返す。
特殊メソッド__getattr__(self,attribute)は存在しないアトリビュートを呼び出す時にブロック以下の処理を行う。
インスタンス.アトリビュートや上記のgetattr関数でも呼び出せる。メソッド名を使うgetattr関数では呼び出せるが同時にメソッドにオブジェクトがないと表示される。
- setattrについて参考になるサイト
- https://www.python.ambitious-engineer.com/archives/1432
- https://blanktar.jp/blog/2014/03/python-setattr.html
アトリビュートを追加する関数setattrの書き方。setattr(インスタンス名,'アトリビュート名',値)で追加する。
特殊メソッド__setattr__(self,attribute,value)はアトリビュートに値を加える時にブロック以下の処理を行う。
インスタンス.アトリビュートや上記のsetattr関数でも呼び出せる。
- getattrとsetattr両方参考になるサイト
- https://qiita.com/kazetof/items/751be29f208836cf9bf4
getattrとsetattr両方参考になるqiitaの記事をjupyternotebookで動かして気づいたこと。self.__dict__[name] = val がポイント。setattr(インスタンス名,'age',33)と書くとsetと書かれたprint関数が表示される。そしてインスタンス.__dict__と書くと{'age':33}と表示される。ブロック以下を__dict__で辞書の形にしたことにより辞書型の結果になる。nameにageが入り、valに33が入った。