2019年8月17日土曜日

開発環境

Head First はじめてのプログラミング ―頭とからだで覚えるPythonプログラミング入門 (Eric Freeman(著)、嶋田 健志(監修)、木下 哲也(翻訳)、株式会社オライリー・ジャパン)を12章(オブジェクト指向プログラミング - オブジェクト村への旅)の自分で考えてみよう(539ページ)の解答を求めてみる。

コード

Python 3

#!/usr/bin/env python3
from unittest import TestCase, main
from typing import List


class CakeTest(TestCase):
    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test_simple_cake(self):
        simple_cake: Cake = Cake()
        self.assertNotIsInstance(simple_cake, BirthdayCake)
        self.assertNotIsInstance(simple_cake, FrostedCake)
        self.assertIsInstance(simple_cake, Cake)

    def test_chocolate_cake(self):
        chocolate_cake: FrostedCake = FrostedCake()
        self.assertIsInstance(chocolate_cake, Cake)
        self.assertIsInstance(chocolate_cake, FrostedCake)
        self.assertNotIsInstance(chocolate_cake, BirthdayCake)

    def test_bills_birthday_cake(self):
        bills_birthday_cake: BirthdayCake = BirthdayCake()
        for cls in [FrostedCake, Cake, BirthdayCake]:
            self.assertIsInstance(bills_birthday_cake, cls)


class Cake:
    def __init__(self):
        self.flavor = None

    def bake(self):
        pass

    def cut(self):
        pass

    def eat(self):
        pass


class FrostedCake(Cake):
    def __init__(self):
        super().__init__()
        self.frosting = None

    def frost(self):
        pass


class BirthdayCake(FrostedCake):
    def __init__(self):
        super().__init__()
        self.name_on_cale = None

    def add_name(self):
        pass

    def add_candles(self):
        pass


if __name__ == '__main__':
    main()

入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))

$ ./sample2.py
EEE
======================================================================
ERROR: test_bills_birthday_cake (__main__.CakeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./sample2.py", line 26, in test_bills_birthday_cake
    bills_birthday_cake: BirthdayCake = BirthdayCake()
NameError: name 'BirthdayCake' is not defined

======================================================================
ERROR: test_chocolate_cake (__main__.CakeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./sample2.py", line 20, in test_chocolate_cake
    chocolate_cake: FrostedCake = FrostedCake()
NameError: name 'FrostedCake' is not defined

======================================================================
ERROR: test_simple_cake (__main__.CakeTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./sample2.py", line 14, in test_simple_cake
    simple_cake: Cake = Cake()
NameError: name 'Cake' is not defined

----------------------------------------------------------------------
Ran 3 tests in 0.001s

FAILED (errors=3)
$ ./sample2.py
...
----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK
$ 

0 コメント:

コメントを投稿