2012年2月19日日曜日

開発環境

『初めての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 コメント:

コメントを投稿