Pythonのお勉強 Part17at TECH
Pythonのお勉強 Part17 - 暇つぶし2ch37:デフォルトの名無しさん
07/02/18 14:06:03
>>35
そのプログラムは単にオブジェクト指向のポリモーフィズム(多様性)を利用しているだけなので
__getattribute__ は必要ありません。そのプログラムを Python で書くなら、こんな感じになります。

class Shain:
    def getKyuyo(self): return 0
class Bucho(Shain):
    def getKyuyo(self): return 700000
class Kacho(Shain):
    def getKyuyo(self): return 500000
class Tanto(Shain):
    def getKyuyo(self): return 300000

s = [ Bucho(), Kacho(), Kacho(), Tanto(), Tanto(), Tanto() ]

goukei = 0
for p in s: goukei += p.getKyuyo()
print goukei


ちなみに、Python では Bucho Kacho Tanto を Shain のサブクラスにしなくても動きます。
これは Java の「変数の型」という概念が Python にはないからです。
Python ではオブジェクトに対してメソッドを呼び出した場合、その名前を持つメソッドが
動的に(実行時に)決定されるので、スーパークラスで抽象化する必要はありません。(ダックタイピング)
(ただし、スーパークラスの振る舞いを引き継ぐ為の継承は有効な手段です)
呼び出されるメソッドが静的に(コンパイル時に)決定される Java や C++ などとの大きな違いですね。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch