pe氏mmbotEvent監視殴り書きメモ2
続き
class ChildOrderEventWatcher(EventWatcher):
def __init__(self, store, order_id, **kwargs):
self._order_id = order_id
self._cond = kwargs
super(ChildOrderEventWatcher, self).__init__(store)
def _is_trigger(self, d):
return d["child_order_acceptance_id"] == self._order_id and all(
[v == d[k] for (k, v) in self._cond.items()]
)
def replace_order_id(self, order_id):
self._order_id = order_id
子クラスを実装してる
子クラスとかよくわからないから調べてみる
とりあえず、親クラスを変更することなく、親クラスにある機能に追加したりすることができるらしい
super(ChildOrderEventWatcher, self).__init__(store)
親クラスのことをスーパークラスとか呼んだりもするらしい
このsuperは親クラスのコンストラクタを呼び出すことができる
また、この書き方はpython2の書き方?っぽい
superの後のクラス名はいらないのかな?よくわからない
消したりして試してみる
initで定義してる**kwargsについてしらべてみる
辞書として引数を受け取るときに使うらしい
def _is_trigger(self, d):
return d["child_order_acceptance_id"] == self._order_id and all(
[v == d[k] for (k, v) in self._cond.items()]
)
引数dはソケットメッセ―ジ
child_order_acceptance_idは注文の受付 ID
all()について調べる
allの中身を見てみる
[v == d[k] for (k, v) in self._cond.items()]
itemsについて調べる
この場合だとvalueと辞書のキーを参照した場合の値が同じだとTrue、それをforでまわすことで、すべての値が同じかどうかを判断してる
すべてが同じ場合はallによってTrueが返される
class ExecutionWatcher(ChildOrderEventWatcher):
def __init__(self, store, order_id):
super().__init__(store, order_id, event_type="EXECUTION")
childordereventwatcherの子クラスで、引数としてevent_type=EXECUTIONを
受け取ってる。約定したときにつかうのかな?確認する
class CancelWatcher(ChildOrderEventWatcher):
def __init__(self, store, order_id):
super().__init__(store, order_id)
def _is_trigger(self, d):
return d["child_order_acceptance_id"] == self._order_id and d["event_type"] in [
"CANCEL",
"CANCEL_FAILED",
]
キャンセルイベント監視にかんしても同様。
注文idがキャンセルなのかどうかを判定
ここまできてやっとis_triggerが監視をしてbool値判定しているものだと気づきました。このtriggerに基づいてなにかしらの処理をしていくんだなぁ。すごい
とりあえず、イベント監視に関してプログラミング初心者が調べながら流し読み終了します。
もし暇な人でここ多分違うぞとかあったら教えてください。