2013年6月13日木曜日

開発環境

『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7)のIV部(クラスとオブジェクト指向プログラミング)、まとめ演習2.(リストの機能のオーバーロード)を解いてみる。

その他参考書籍

まとめ演習2.(リストの機能のオーバーロード)

sample.py

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

class MyList(list):
    def __add__(self, y): # 加算演算子をカスタマイズ
        return (list.__add__(self, y), [self, y])

if __name__ == '__main__':
    even = MyList([2, 4, 6, 8, 10])
    odd = MyList([1, 3, 5, 7, 9])
    ml = MyList([1,2,3,4,5,6,7,8,9,10])
    l = [1,2]
    for x in [("even", even), ("odd", odd), ("ml", ml)]:
        print("{0} = {1}".format(x[0], x[1]))
    print("even + odd = {0} {1}".format(even + odd, type(even + odd)))
    print("odd + even = {0}".format(odd + even))
    even.append(5)
    print(type(even))
    print("ml + l = {0}".format(ml + l))
    print("l + ml = {0} {1}".format(l + ml, type(l + ml)))
    

入出力結果(Terminal)

$ ./sample.py
even = [2, 4, 6, 8, 10]
odd = [1, 3, 5, 7, 9]
ml = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even + odd = ([2, 4, 6, 8, 10, 1, 3, 5, 7, 9], [[2, 4, 6, 8, 10], [1, 3, 5, 7, 9]]) <class 'tuple'>
odd + even = ([1, 3, 5, 7, 9, 2, 4, 6, 8, 10], [[1, 3, 5, 7, 9], [2, 4, 6, 8, 10]])
<class '__main__.MyList'>
ml + l = ([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2], [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2]])
l + ml = [1, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] <class 'list'>
$

0 コメント:

コメントを投稿