【Python】定数管理のための、値の追加・変更を不可にするクラスを実装する
概要
機械学習の実験を回していると、しばしば複数の定数を管理したくなることがあります。(例えば、実験を回すマシンごとのデータセットのパスなど)
Pythonでは、他のプログラミング言語のconst
のような定数がサポートされていません。
PEP8の慣例に従って、大文字とアンダースコアで命名して定数を表す変数を作成したとしても、
それらは基本的に外部から書き換え可能で、意図しない変数の変更が起きてしまいます。
そこで今回は、Pythonで定数を管理するためのクラスを作成してみました。 その定数はクラス変数として管理され、クラス変数の追加や変更はできないようになっております。 そのため、定数の意図しない書き換えは発生せず、バグを防ぐことが可能です。 もし他に良い方法があれば、コメントにて教えていただけると幸いです。
続きを読む【numpy】特定の範囲だけにseedを設定する
概要
最近、numpyの配列をとある方法でシャッフルする関数を実装していたのですが、
与えたseedの値によってシャッフルの仕方が固定されるようにしたいと考えていました。
np.random.seed
をシャッフルの処理の前に挟んでやれば、必ず同じシャッフルの仕方にはなるのですが、関数の外のseedも変更してしまうことになります。
そこで今回は、関数の外のseedを変更せずに、特定の範囲だけにseedを設定する方法について調べたので、こちらにメモを残しておきます。