「Rubyではじめるシステムトレード」のPython版開発1

投稿者: | 2022年7月13日

坂本タクマ氏の書籍「Rubyではじめるシステムトレード」に従って、Python版のコード開発を行う。Ruby版では株式に関する情報処理をStock classを導入して実現している。Python版でも同じ機能を持つStock classとmethodを実装する。Pythonでclassを用いた経験があまりないため、まずは書籍内にあるRubyのsample codeをPythonで記述することにより、Pythonでのclassの使い方を学習する。

まずは書籍でclassとmethodの基本事項の解説に使われているTrader classを作成した。

trader.py

class Trader:
    def win(self):
        print("Win!")
    def lose(self):
        print(".....")
    def win_or_lose(self, result):
        if result == "win":
            self.win()
        elif result == "lose":
            self.lose()
    
takuma = Trader()
takuma.win()
takuma.lose()
takuma.win_or_lose("win")
takuma.win_or_lose("lose")

これを実行すると、classが機能しmethodにより以下のように出力される。

インスタンス変数の事例であるWallet classsもPythonで記述してみた。

wallet.py

class Wallet:
    def __init__(self, money):
        self.money = money
    def put_in(self, money):
        self.money += money
    def take_out(self, money):
        self.money -= money
    def money(self, money):
        print(money)

my_wallet = Wallet(1000)
print(my_wallet.money)
my_wallet.put_in(5000)
print(my_wallet.money)
my_wallet.take_out(3000)
print(my_wallet.money)

これを実行すると、以下のようにインスタンス変数moneyの値をmethodで設定できていることが確認できる。

さらに事例として書籍で解説されているMan classを作成した。

Man.py

class Man:
    def __init__(self, name):
        if name:
            self.name = name
        else:
            self.name = "Gonbei"
man1 = Man("Taro")
man2 = Man("")

print(man1.name)
print(man2.name)

nameが未設定の場合、if節によりインスタンス変数nameは”Gonbei”と設定される。

Pythonの解説書でオブジェクト指向に関する以下の概念は勉強

  • クラス
  • インスタンス
  • インスタンス変数
  • ローカル変数
  • インスタンスメソッド

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です