2013年6月9日日曜日

開発環境

『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7)のIV部(クラスとオブジェクト指向プログラミング)、26章(クラスに関する高度なテクニック)の練習問題1を解いてみる。

その他参考書籍

1.

sample.py

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

# ビルトイン型のオブジェクトの機能を拡張
# int型の加算演算子を2つの方法でカスタマイズ
# クラスを継承
class MyInt1(int):
    def __add__(self, y):
        print("{0}に{1}を加算".format(self, y))
        return int.__add__(self, y)

# デリゲーションを利用
class MyInt2:
    def __add__(self, y):
        print("{0}に{1}を加算".format(self, y))
        return MyInt2(self + y)
    def __getattr__(self, attrname):
        return getattr(int, attrname)
    # intの他のメソッドは省略
  
print("サブクラスを作成")  
a = MyInt1(10)
print(a)
b = a + 100
print(b)
c = MyInt1(1000)
d = a + c
print(d)
print("{0} * 5 = {1}".format(a, a * 5))

print("デリゲーションの利用")
a = MyInt1(10)
print(a)
b = a + 100
print(b)
c = MyInt1(1000)
d = a + c
print(d)
print("{0} * 5 = {1}".format(a, a * 5))

入出力結果(Terminal)

$ ./sample.py
サブクラスを作成
10
10に100を加算
110
10に1000を加算
1010
10 * 5 = 50
デリゲーションの利用
10
10に100を加算
110
10に1000を加算
1010
10 * 5 = 50
$

0 コメント:

コメントを投稿