普段 Julia を書いているのですが、Python でどう管理すればよいのか分からないことがあります。
クラスによって異なる実装になるかもしれないのですが、同じ意味の値を返す関数をいろんな既存のモジュールのクラスについて定義したいのですが、やり方がよく分かりません。自作のモジュールなら、そのモジュールをいじって、該当クラスのメソッドを追加すれば良いだけですが、既存のモジュールにその関数を別名を付けないで実装するにはどうすれば良いのでしょうか?Python では、同じ名前を付けたい場合は、関数の引数の型に関するオーバーロードはないので、多くの場合、クラスのメソッドとしてその機能を提供すると思うのですが、既存のクラスをいじりたい場合はどうすれば良いのでしょうか?
現在はとりあえず、型ごとに別名を関数のお尻に付けて対処していますが、段々増えてきて煩雑になってきてしまったのでどうにかしたいです。
例えば、現在、
python
1import modulea 2import moduleb 3 4def func1_a(a1: modulea.TypeA, a2: modulea.TypeA) -> modulea.TypeA: 5 a = a1 + a2 6 return a 7def func1_b(b1: moduleb.TypeB, b2: moduleb.TypeB) -> moduleb.TypeB: 8 b = b1 + b2 9 return b 10def func2_a(a1: modulea.TypeA, a2: modulea.TypeA) -> modulea.TypeA: 11 a = a1 - a2 12 return a 13def func2_b(b: moduleb.TypeB, b2: moduleb.TypeB) -> moduleb.TypeB: 14 b = b1 - b2 15 return b 16 17# 関数を使うとき 18 19func1_a(a1, a2) 20func1_b(b1, b2) 21func2_a(a1, a2) 22func2_b(b1, b2)
こんな感じになっているのを
python
1func1(a1, a2) 2func1(b1, b2) 3func2(a1, a2) 4func2(b1, b2)
または
python
1a1.func1(a2) 2b1.func1(b2) 3a1.func2(a2) 4b1.func2(b2)
として管理したいということです。
回答2件
あなたの回答
tips
プレビュー