Kuzunoha-NEのブログ

プログラミングなどの勉強をしてます

【Ruby => Python】たい焼きクラスを作ってみる

こんばんは、葛の葉です。こんな動画があったんです。

www.youtube.com

前に紹介した本の著者だった!びっくり!

kuzunoha-ne.hateblo.jp

qiita.com

ちょっとそれらの動画やページをみつつ、RubyからPythonに移植できるか、やってみました。

[Step 1. 「あんこ」の種類を保持できるようにする]

'''
Python
https://www.youtube.com/watch?v=HsivL1JBRaw
RubyのこれをPythonに移植してみよう!
'''
import unittest


class Taiyaki:
    def __init__(self, anko):
        self.anko = anko


class TaiyakiTest(unittest.TestCase):

    def test_taiyaki(self):
        taiyaki_1 = Taiyaki('あんこ')
        self.assertEqual('あんこ', taiyaki_1.anko)
        taiyaki_2 = Taiyaki('白あん')
        self.assertEqual('白あん', taiyaki_2.anko)


if __name__ == '__main__':
    unittest.main(exit=False)

Step 2. 「大きさ」を保持できるようにする

'''
Python
https://www.youtube.com/watch?v=HsivL1JBRaw
RubyのこれをPythonに移植してみよう!
'''
import unittest


class Taiyaki:
    def __init__(self, anko, size):
        self.anko = anko
        self.size = size


class TaiyakiTest(unittest.TestCase):

    def test_taiyaki(self):
        taiyaki_1 = Taiyaki('あんこ', 'ふつう')
        self.assertEqual('あんこ', taiyaki_1.anko)
        self.assertEqual('ふつう', taiyaki_1.size)

        taiyaki_2 = Taiyaki('白あん', '大きい')
        self.assertEqual('白あん', taiyaki_2.anko)
        self.assertEqual('大きい', taiyaki_2.size)


if __name__ == '__main__':
    unittest.main(exit=False)

Step 3. [自分の状態を文字列として返せるようにする]

'''
Python
https://www.youtube.com/watch?v=HsivL1JBRaw
RubyのこれをPythonに移植してみよう!
'''
import unittest


class Taiyaki:
    def __init__(self, anko, size):
        self.anko = anko
        self.size = size

    def to_s(self):
        return 'あんこ: {anko}, 大きさ: {size}'.format(anko=self.anko, size=self.size)


class TaiyakiTest(unittest.TestCase):

    def test_taiyaki(self):
        taiyaki_1 = Taiyaki('あんこ', 'ふつう')
        self.assertEqual('あんこ', taiyaki_1.anko)
        self.assertEqual('ふつう', taiyaki_1.size)
        self.assertEqual('あんこ: あんこ, 大きさ: ふつう', taiyaki_1.to_s())

        taiyaki_2 = Taiyaki('白あん', '大きい')
        self.assertEqual('白あん', taiyaki_2.anko)
        self.assertEqual('大きい', taiyaki_2.size)
        self.assertEqual('あんこ: 白あん, 大きさ: 大きい', taiyaki_2.to_s())

if __name__ == '__main__':
    unittest.main(exit=False)

残りは…

残りは君自身の目で確かめてみてくれ!

単体テストしながらコード書いたのは楽しかった。

インスタンスメソッドを追加することで機能を追加していくところが楽しかった。

Rubyの勉強もPythonの勉強も出来たから、もしかして移植ってなかなか勉強になるんじゃないのかな?って思いました。