こんにちは、えあーです。
先日C++を使ってさじを投げました。
何を言っているか意味不明という人は
先日の記事を読んでください。リンク置いておきます。
「pythonでもやってくれ」と言われたので、
pythonでさじを投げたいと思います。
早速さじを投げる
説明は上記の記事に詳しくあるので、
こちらでは早速匙を投げます。
もはや記事を書くということの匙を投げている説
1 2 3 4 5 6 7 8 9 10 |
# coding: utf-8 class SpoonException(Exception): def __init__(void): print("もう無理 ポイ(・・*)ノ ⌒ρ") try: raise SpoonException except SpoonException: pass |
適当に例外処理を使ってあげて、完成でs……
投げてないやんけ!!!
SpoonExceptionを作ってコンストラクタでさじを投げるようにしたまではいいとして、
main(書いてないけど)の中で例外を投げるコマンドがthrowじゃなくてraiseでした。
pythonで例外処理初めて書いたんですけどこれは驚きです……
ということで、pythonでは匙が投げられない事がわかりました。
raiseの意味
一応throwの代わりに使われているraiseの意味について検証します。
raiseは「持ち上げる」というのが基本の意味です。
pythonでは反乱や騒動を「起こす」とか、異議などを「提出する」の意で使われていそうです。後者かな。
ということで、一番よく使われる意味で考えると、
さじを持ち上げるということになります。
シュール過ぎて面白い。
ちなみにこの後catchされるわけでもなく、
exceptされてもpassされて誰も拾ってくれないので、
C++より救いのない結果になります。
でもやっぱりなんか違う
でも何が違うと思ったので、
raiseするものを考えました。
というより会社の人と話し合いました。
結果がこちら。
1 2 3 4 5 6 7 8 9 10 |
# coding: utf-8 class WhiteFlag(Exception): def __init__(void): print("(∩_∩;)P 白旗~!") try: raise WhiteFlag except WhiteFlag: pass |
『白旗を揚げる』です。
しっかりraiseできるようになりました。
これでそれっぽくなったというものです。
でも負けを認めているのに何もしてくれないのは寂しいと思いました。
反応を追加する
寂しくないように、白旗を揚げたらちゃんと応えてくれるようにしました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# coding: utf-8 class WhiteFlag(Exception): def __init__(void): print("(∩_∩;)P 白旗~!\n") class Honda: def __init__(void): print("俺の勝ち!\n何で負けたか、明日まで考えといてください。\nそしたら何かが見えてくるはずです。\nほな、いただきます。") try: raise WhiteFlag except WhiteFlag: keisuke = Honda() |
負けるとケイスケ・ホンダに煽られます。
本田圭佑が白旗を上げている相手を抉るシーンができました。
まぁ無視されるよりはマシだと思います。
まとめ
みんなも積極的に白旗を揚げよう!!
コメント
[…] 【python】pythonでも、さじを投げたい […]