2013年3月25日月曜日

開発環境

『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7) のVI部(クラスとオブジェクト指向プログラミング)の22章(Pythonでのオブジェクト指向プログラミング)の練習問題2を解いてみる。

その他参考書籍

2.

コード(BBEdit)

sample.py

#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

class A: a = 1
class B: a = 2
class C(A): pass
class D(B): pass
class E(C, D): pass

e = E()
print(e.a) # 属性は下から上、左から右の順に検索されるので1

# ダイヤモンド継承の場合はpython2.xとpython3.xで順序が違うので注意が必要
# python3.xでは下位のクラスから順に検索される(左から右という優先順位は変わらない)
class F: a = 1
class G(F): pass
class H(F): a = 2
class I(G, H): pass
i = I()
print(i.a) # python2.xの場合は1、python3.xの場合は2

入出力結果(Terminal)

$ ./sample.py
1
2
$ python2.7 sample.py
1
1
$

0 コメント:

コメントを投稿