質問編集履歴
3
コードが間違っていたのを訂正
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,16 +9,16 @@
|
|
9
9
|
import modulea
|
10
10
|
import moduleb
|
11
11
|
|
12
|
-
def func1_a(a1: modulea.TypeA, a2: modulea.TypeA)
|
12
|
+
def func1_a(a1: modulea.TypeA, a2: modulea.TypeA) -> modulea.TypeA:
|
13
13
|
a = a1 + a2
|
14
14
|
return a
|
15
|
-
def func1_b(b1: moduleb.TypeB, b2: moduleb.TypeB)
|
15
|
+
def func1_b(b1: moduleb.TypeB, b2: moduleb.TypeB) -> moduleb.TypeB:
|
16
16
|
b = b1 + b2
|
17
17
|
return b
|
18
|
-
def func2_a(a1: modulea.TypeA, a2: modulea.TypeA)
|
18
|
+
def func2_a(a1: modulea.TypeA, a2: modulea.TypeA) -> modulea.TypeA:
|
19
19
|
a = a1 - a2
|
20
20
|
return a
|
21
|
-
def func2_b(b: moduleb.TypeB, b2: moduleb.TypeB)
|
21
|
+
def func2_b(b: moduleb.TypeB, b2: moduleb.TypeB) -> moduleb.TypeB:
|
22
22
|
b = b1 - b2
|
23
23
|
return b
|
24
24
|
|
2
具体的な例を追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,51 @@
|
|
1
1
|
普段 Julia を書いているのですが、Python でどう管理すればよいのか分からないことがあります。
|
2
2
|
クラスによって異なる実装になるかもしれないのですが、同じ意味の値を返す関数をいろんな既存のモジュールのクラスについて定義したいのですが、やり方がよく分かりません。自作のモジュールなら、そのモジュールをいじって、該当クラスのメソッドを追加すれば良いだけですが、既存のモジュールにその関数を別名を付けないで実装するにはどうすれば良いのでしょうか?Python では、同じ名前を付けたい場合は、関数の引数の型に関するオーバーロードはないので、多くの場合、クラスのメソッドとしてその機能を提供すると思うのですが、既存のクラスをいじりたい場合はどうすれば良いのでしょうか?
|
3
3
|
|
4
|
-
現在はとりあえず、型ごとに別名を関数のお尻に付けて対処していますが、段々増えてきて煩雑になってきてしまったのでどうにかしたいです。
|
4
|
+
現在はとりあえず、型ごとに別名を関数のお尻に付けて対処していますが、段々増えてきて煩雑になってきてしまったのでどうにかしたいです。
|
5
|
+
|
6
|
+
例えば、現在、
|
7
|
+
|
8
|
+
```python
|
9
|
+
import modulea
|
10
|
+
import moduleb
|
11
|
+
|
12
|
+
def func1_a(a1: modulea.TypeA, a2: modulea.TypeA): modulea.TypeA
|
13
|
+
a = a1 + a2
|
14
|
+
return a
|
15
|
+
def func1_b(b1: moduleb.TypeB, b2: moduleb.TypeB): moduleb.TypeB
|
16
|
+
b = b1 + b2
|
17
|
+
return b
|
18
|
+
def func2_a(a1: modulea.TypeA, a2: modulea.TypeA): modulea.TypeA
|
19
|
+
a = a1 - a2
|
20
|
+
return a
|
21
|
+
def func2_b(b: moduleb.TypeB, b2: moduleb.TypeB): moduleb.TypeB
|
22
|
+
b = b1 - b2
|
23
|
+
return b
|
24
|
+
|
25
|
+
# 関数を使うとき
|
26
|
+
|
27
|
+
func1_a(a1, a2)
|
28
|
+
func1_b(b1, b2)
|
29
|
+
func2_a(a1, a2)
|
30
|
+
func2_b(b1, b2)
|
31
|
+
```
|
32
|
+
|
33
|
+
こんな感じになっているのを
|
34
|
+
|
35
|
+
```python
|
36
|
+
func1(a1, a2)
|
37
|
+
func1(b1, b2)
|
38
|
+
func2(a1, a2)
|
39
|
+
func2(b1, b2)
|
40
|
+
```
|
41
|
+
|
42
|
+
または
|
43
|
+
|
44
|
+
```python
|
45
|
+
a1.func1(a2)
|
46
|
+
b1.func1(b2)
|
47
|
+
a1.func2(a2)
|
48
|
+
b1.func2(b2)
|
49
|
+
```
|
50
|
+
|
51
|
+
として管理したいということです。
|
1
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,2 +1,4 @@
|
|
1
1
|
普段 Julia を書いているのですが、Python でどう管理すればよいのか分からないことがあります。
|
2
|
-
クラスによって異なる実装になるかもしれないのですが、同じ意味の値を返す関数をいろんな既存のモジュールのクラスについて定義したいのですが、やり方がよく分かりません。自作のモジュールなら、そのモジュールをいじって、該当クラスのメソッドを追加すれば良いだけですが、既存のモジュールにその関数を別名を付けないで実装するにはどうすれば良いのでしょうか?Python では、同じ名前を付けたい場合は、関数の引数の型に関するオーバーロードはないので、多くの場合、クラスのメソッドとしてその機能を提供すると思うのですが、既存のクラスをいじりたい場合はどうすれば良いのでしょうか?
|
2
|
+
クラスによって異なる実装になるかもしれないのですが、同じ意味の値を返す関数をいろんな既存のモジュールのクラスについて定義したいのですが、やり方がよく分かりません。自作のモジュールなら、そのモジュールをいじって、該当クラスのメソッドを追加すれば良いだけですが、既存のモジュールにその関数を別名を付けないで実装するにはどうすれば良いのでしょうか?Python では、同じ名前を付けたい場合は、関数の引数の型に関するオーバーロードはないので、多くの場合、クラスのメソッドとしてその機能を提供すると思うのですが、既存のクラスをいじりたい場合はどうすれば良いのでしょうか?
|
3
|
+
|
4
|
+
現在はとりあえず、型ごとに別名を関数のお尻に付けて対処していますが、段々増えてきて煩雑になってきてしまったのでどうにかしたいです。
|