2012年12月26日水曜日

開発環境

『初めてのPython 第3版』(Mark Lutz 著、夏目 大 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-393-7) のVI部(オブジェクト指向プログラミング)24章(クラスのコーディング(詳細))の練習問題4、5を解いてみる。

その他参考書籍

4, 5.

コード(BBEdit)

sample.py

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

class A:
    def __init__(self, data):
        self.data = data

    def f(self):
        print("Hello, Class A!")
        print(self.data)

class B(A):
    def __init__(self, data):
        A.__init__(self, data)
        self.data2 = "__init__"
    
    def f(self):
        A.f(self) # スーパークラスのメソッドの機能を全て活かす
        print("Hello, Class B!")
        print(self.data, self.data2)

a = A(10)
b = B(20)
for x in (a, b):
    x.f()
    print()

入出力結果(Terminal)

$ ./sample.py
Hello, Class A!
10

Hello, Class A!
20
Hello, Class B!
20 __init__

$

ちなみにJavaScriptの場合。

コード(BBEdit)


var Obj1 = function(o){
  this.a = o;
};
Obj1.prototype.f = function(){
  $('#pre0').append("Hello, Obj1!\n");
  $('#pre0').append(this.a + "\n");
};
var Obj2 = function(o){
  this.b = "function";
  Obj1.prototype.a = o;
};
Obj2.prototype = new Obj1();
Obj1.constructor = Obj2;
Obj2.prototype.f = function(){
  Obj1.prototype.f();
  $('#pre0').append("Hello, Obj2!\n");
  $('#pre0').append(this.b + "\n");
};
var o1 = new Obj1(10);
var o2 = new Obj2(20);
var a = [o1, o2];
for(var i = 0; i < a.length; i++){
  a[i].f();
  $('#pre0').append("\n");
}









						

0 コメント:

コメントを投稿