みんなの Python 2-2 Python とオブジェクト指向

みんなのPython

みんなのPython

今日は 2-2 「Pythonオブジェクト指向」を読みました。

  • 「組み込み型が、クラスとよく似た性質を持っています」えっ組み込み型はクラスじゃないの?
  • Set クラスのインスタンスを作るには Set(args...) とする。new とかはいらない
  • 演算子の再定義もできるらしい。でも定義のしかたはここでは書かれてなかった。
  • Ruby で言うところのインスタンスメソッドのことが「クラスメソッド」と記述されている
  • メソッドの定義では最初の引数を self にしないといけない……
  • 初期化時に呼ばれるメソッドは __init__()
  • 文字列化したい時(print() に渡された時など)に呼ばれるメソッドは __str__()
  • アトリビュート(本書の表記)はクラス定義の外で勝手に代入して増やすこともできる。うーん。
  • private なアトリビュートであることは名前をアンダースコアから始めることで指定できる。アンダースコア2つにすると参照もできなくなる。
  • クラスを継承する時の記法は class NewClass(SuperClass, ...): のようにする。多重継承が可能
  • クラス定数(クラスのアトリビュート)を定義できる。Python の場合関数を型として扱えるので関数を代入すればクラスメソッドっぽくできるでしょうけど、自分のクラスとか取れるのかな。

うーん、随所で何度も「自然です」と書かれているのですが、Pythonオブジェクト指向っぽさは少し中途半端というか、とってつけたような印象です。
それから、クラスを使ってこういうことができます、と書かれたところのすぐ後に、これをするためにはこういう風に定義します、って書かれているほうが慣れている者(すぐ試してみたい人)には読み易いように感じました。