開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc., Emacs(Text Editor)
- プログラミング言語: Python
『初めての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 コメント:
コメントを投稿