2013年1月3日木曜日

開発環境

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

その他参考書籍

1.(継承)

コード(BBEdit)

sample.py

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

class Adder:
    def __init__(self, data):
        self.data = data
    def add(self, x):
        print("Not implemented")
    def __add__(self, other):
        return self.data + other

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

class DictAdder(Adder):
    def add(self, other):
        res = {}
        for k, v in self.data.items():
            res[k] = v
        for k, v in other.items():
            res[k] = v
        return res

if __name__ == '__main__':
    a = Adder(10)
    b = ListAdder([1,2,3,4,5])
    c = DictAdder({'a':1,'b':2})
    for x, y in [(a, 20), (b, [6,7]), (c, {"c":3,'d':4,'e':5})]:
        print(x.add(y))
        if not type(x) == DictAdder:
            print(x + y)

入出力結果(Terminal)

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

class Adder:
    def __init__(self, data):
        self.data = data
    def add(self, x):
        print("Not implemented")
    def __add__(self, other):
        return self.data + other

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

class DictAdder(Adder):
    def add(self, other):
        res = {}
        for k, v in self.data.items():
            res[k] = v
        for k, v in other.items():
            res[k] = v
        return res

if __name__ == '__main__':
    a = Adder(10)
    b = ListAdder([1,2,3,4,5])
    c = DictAdder({'a':1,'b':2})
    for x, y in [(a, 20), (b, [6,7]), (c, {"c":3,'d':4,'e':5})]:
        print(x.add(y))
        if not type(x) == DictAdder:
            print(x + y)

ちなみにJavaScriptの場合。

コード(BBEdit)

var Adder = function(data){
  this.data = data;
};
Adder.prototype.add = function(x, y){
  $('#pre0').append("Not implemented\n");
};
var ArrayAdder = function(data){
  Adder.apply(this,[data]);
};
ArrayAdder.prototype = new Adder();
ArrayAdder.prototype.add = function(o){
  return this.data.concat(o);
};
var DictAdder = function(data){
  Adder.apply(this,[data]);
};

DictAdder.prototype = new Adder();
DictAdder.prototype.add = function(o){
  var res = {};
  for(var p in this.data){
    res[p] = this.data[p];
  }
  for(var p in o){
    res[p] = o[p];
  }
  return res;
};
var a = new Adder(10);
var b = new ArrayAdder([1,2]);
var c = new DictAdder({'a':1,'b':2});
a.add(20);
$('#pre0').append(b.add([3,4,5]) + "\n");
var d = c.add({'c':3,'d':4,'e':5});
for(var p in d){
  $('#pre0').append(p + ": " + d[p] + "\n");
}








						

0 コメント:

コメントを投稿