2014年4月20日日曜日

開発環境

Learning Python (Mark Lutz (著)、Oreilly & Associates Inc)のPART Ⅵ.(Classes and OOP)、CHAPTER 29(Class Coding Details)、Test Your Knowledge: Quiz.1.~6.を解いてみる。

その他参考書籍

Test Your Knowledge: Quiz.1.~6.

コード(BBEdit)

sample.py

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

# abstract class
class Abs:
    def __init__(self):
        raise Exception("Abs: abstract class")
    def method(self):
        raise NotImplementedError

class Sup(Abs):
    # top level
    count = 0
    def __init__(self, count=5):
        print('Hello, super class!')
        self.count = count
        Sup.count += 1
    def method(self):
        print('Hello, super class method!')

class Sup1(Abs): pass

class Sub(Sup):
    def __init__(self, count=10):
        print('Sub class start')
        Sup.__init__(self, count)
        print('Sub class end')
    # completely replacing
    def method(self):
        # local scope
        x = 100
        print('Hello, sub class method!')

if __name__ == '__main__':
    try:
        a = Abs()
    except Exception as err:
        print(type(err), err, err.args)

    b = Sup()
    try:
        c = Sup1()
    except Exception as err:
        print(type(err), err, err.args)
    d = Sub()

    b.method()
    d.method()

入出力結果(Terminal)

$ ./sample.py
<class 'Exception'> Abs: abstract class ('Abs: abstract class',)
Hello, super class!
<class 'Exception'> Abs: abstract class ('Abs: abstract class',)
Sub class start
Hello, super class!
Sub class end
Hello, super class method!
Hello, sub class method!
$

0 コメント:

コメントを投稿