開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの無料機能制限版、light版)
- Script言語: Python
『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7)のVI部(クラスとオブジェクト指向プログラミング)の24章(クラスのコーディング(詳細))練習問題を解いてみる。
1.
抽象クラスとは、機能の一部をサブクラスに依存してるクラス。
2.
演算子のオーバーロードのためのメソッドのうち、クラスで反復処理をサポートする際に使用するのは__getitem__メソッド、__iter__メソッド。
3.
単純な代入ステートメントを、classステートメントのトップレベルに置くと、そのクラスのすべてのインスタンスに共有される。
4.
スーパークラスの__init__メソッドを呼び出すコードをサブクラスに入れる必要があるのは、スーパークラスでの機能をすべて保ったまま__init__メソッドをカスタマイズする(新たな機能を付け加える)場合。
class Super: def __init__(self,a): // class Sub(Super): def __init__(self,a,b): Super.__init__(self,a,b): //
5.
継承したメソッドを完全に別の物に置き換えるのではなく、スーパークラスのメソッドの 機能をすべて活かした上で、新たな機能を追加するには、ス部クラスでスーパークラスのメソッド呼び出せばいい。
class Super: def f(self): // class Sub(Super): def f(self): Super.f(self) // 機能の追加
6.
この章の最後のコード例で、Employeeクラスのインスタンが代入されたsueが出力されるとき、GenericDisplayクラスの__str__メソッド、そしてそのメソッド内のgatherAttrsメソッドが動作する。
よって出力結果は次のようになる。
<Employee: name=Sue Jones age=44 job=dev pay=100000 >
実際にはディクショナリの表示の順序は違うかも。
0 コメント:
コメントを投稿