2009年4月16日木曜日

Java使いのPython手習い: class

  • クラスの宣言はclass <クラス名>:
  • インスタンス変数は「アトリビュート」と呼ぶ
  • インスタンス化は、単に<クラス名()>とする
  • コンストラクタは「初期化メソッド」とよび__init__(self)として定義する
  • 複数引数をとることも可能。__init__(self, arg1, arg2...)とすればよい
  • selfには自身のインスタンスが渡される。名前は何でもよいが、慣習的にselfとなっている。
  • クラスに定義されるメソッドには、常に第一引数に自身のインスタンスが渡される。
  • アトリビュートの明示的な宣言方法はなく、クラス中で代入操作が行われるものが属性として登録される(このときself.<変数名>としないとメソッドのローカル変数として扱われるので注意)。
  • メソッドオーバーロードはできないようだ。後に宣言したもので上書きされてしまう。
  • 厳格なアクセス制限はなく、規約による制限(名称の前にアンダースコア一つつける)もしくは自動名称変換による擬似的な制限(名称の前にアンダースコア2つつける)によってprivateであることを示す
  • 自動名称変換による制限の場合でも、その名前を外部から代入してもエラーにはならない。その時点でインスタンスに属性として外部から定義されているようだ(?)

0 Comments: