2013年6月12日水曜日

開発環境

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

その他参考書籍

まとめ演習1.(継承)

sample.py

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

class Adder:
    def add(self, x, y):
        print("Not Implemented")

class ListAdder(Adder):
    def add(self, x, y):
        return x + y

class DictAdder(Adder):
    def add(self, x, y):
        x.update(y)
        return x

入出力結果(Terminal)

$ python
Python 3.3.1 (default, Apr  6 2013, 12:29:18) 
[GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from sample import *
>>> a=Adder()
>>> b=ListAdder()
>>> c=DictAdder()
>>> a.add(5,10)
Not Implemented
>>> b.add([1,2],[3,4,5])
[1, 2, 3, 4, 5]
>>> c.add({'a':1,'b':2}, {'c':3,'d':4,'e':5})
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4}

sample.py

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

class Adder:
    def __init__(self, data):
        self.data = data
    def __add__(self, y):
        return self.add(y)
    def add(self, y):
        print("Not Implemented")

class ListAdder(Adder):
    def add(self, y):
        return self.data + y

class DictAdder(Adder):
    def add(self, y):
        self.data.update(y)
        return self.data

if __name__ == '__main__':
    a = ListAdder([1,2])
    b = DictAdder({'a':1,'b':2})
    print(a + [3,4,5])
    print(b + {'c':3,'d':4,'e':5})

入出力結果(Terminal)

$ ./sample.py
[1, 2, 3, 4, 5]
{'d': 4, 'e': 5, 'a': 1, 'b': 2, 'c': 3}
$

0 コメント:

コメントを投稿