みんなの Python 2-3 純粋オブジェクト指向言語としての Python (前半)

みんなのPython

みんなのPython

今日は 2-3 「純粋オブジェクト指向言語としての Python」の前半読みました。

なんと昨日読んだ 2-2 のオブジェクト指向は純粋じゃなかったんですね!?……すみません、つい茶化してしまいましたが、章立てをあらかじめ確認していなかったので「じゃあ 2-2 のオブジェクト指向はなんだったんだ」とか「純粋オブジェクト指向ってなに?」とか見出しを見ただけでもやもやしてしまったのです。

  • 要するにメソッドも関数がアトリビュートになってるようなもんだよと言っている
    • ああ、それでメソッドの第1引数が常に明示的に self じゃないといけないのかーなるほど
  • 組み込み関数 dir() でインスタンスオブジェクトのアトリビュート一覧を文字列のリストとして取得できる。やっとリフレクションっぽいのが出てきた
  • 組み込み関数 type() で型/クラスが取得できる
  • 組み込み型とクラスの関係には歴史的経緯から微妙に違いがあるらしい
  • is_a? のようにインスタンスがクラスに属するかどうかは組み込み関数 isinstance() で調べる
  • メソッドとは「呼び出し可能オブジェクト」であり、__call__ というアトリビュートを持ってる。つまり __call__ で呼び出せるってことですね
  • 構文にたよらず組み込み関数 setattr() でアトリビュートを設定できる
  • __slot__ アトリビュートアトリビュートの追加を制限できる

時間切れのためここまで。メタプログラミングのための基礎知識が出てきはじめて盛り上がってきました。