プログラミング初心者がアーキテクトっぽく語る

見苦しい記事も多数あるとは思いますが訂正しつつブログと共に成長していければと思います

2021年にPython 2.7を書いてみた

正確にはPython 3.9で書いたコードをPython 2.7に変更しました。

そのとき感じたことを記録します。


はじまり

作業効率化のために簡単なツールをPythonで作ってみました。

自分の環境では問題なく動作したのですが実環境にうつしたらエラーが発生。

pathlibがないって?

恐る恐るPythonのバージョンを確認したら、、、なんと2.7でした。


Python 2.7へ書き換え

諸事情により実環境のPythonのアップデートは不可でした。

もう諦めようかとも思いましたが時間もあったのでコードを2.7へ書き換えることにしました。

まずPyCharmでインタプリタPython 2.7へ変更します。

おおおお、、、、、大量のエラーが。。。


その1:pathlibがない

これはosに置き換えればよいので簡単なお仕事でした。


その2:type hintがない

type hintがあるとIDEが補完を出しやすくなり、作業効率や安心感が増します。お勧めです。

今回は3.9で書いてから2.7化したのでtype hintの恩恵を受けながらスムーズにコーディングできました。

しかし2.7ではtype hintは使えません。

書き換えること自体は簡単な作業でしたが、最初から2.7でtype hintなしでスクラッチからコーディングしてたらと思うとぞっとしました。

2.7とは仲良く慣れないと思いました。


その3:f Stringがない

str.formatに置き換えます。

f Stringの方がコード全体がすっきりして好みです。


その4:コンストラクタを疑似private化した部分がエラー

Builderパターンを適用したためコンストラクタからインスタンスを生成してほしくないケースがありました。

Pythonではメソッドをprivateにすることはできません。そこで__new__を殺して、__init__を呼ぶgetInstanceクラスメソッドを作ってました。

3.9では問題なく動いたのですがなぜか2.7ではエラーが出ます。

エラーの詳細はよくわかりません。

2021年にもなって2.7の詳細について学びたくもないので__new__を復活させるという暴挙に出ました。

新たな問題を生んだわけですが、とりあえずエラーは消えました。

誰も保守、運用しないコードだからいいでしょ。(言い訳)


結論

単体試験も含めて2.7化するのに1時間くらいかかりました。

基本的な標準ライブラリしか使わない簡単なコードだったのでシンプルな書き換えで済みました。

外部ライブラリを色々使う、複雑なアプリだったらカオスだったと思います。

それでもPython 2.7が嫌いになるには十分でした。

願わくばいつも新しい環境でコーディングしたいものです。

Python 2.7とか、Cenots7とか、そろそろやめてください。