質問編集履歴

3

コードが間違っていたのを訂正

2021/12/11 09:10

投稿

Paalon
Paalon

スコア266

test CHANGED
File without changes
test CHANGED
@@ -20,25 +20,25 @@
20
20
 
21
21
 
22
22
 
23
- def func1_a(a1: modulea.TypeA, a2: modulea.TypeA): modulea.TypeA
23
+ def func1_a(a1: modulea.TypeA, a2: modulea.TypeA) -> modulea.TypeA:
24
24
 
25
25
  a = a1 + a2
26
26
 
27
27
  return a
28
28
 
29
- def func1_b(b1: moduleb.TypeB, b2: moduleb.TypeB): moduleb.TypeB
29
+ def func1_b(b1: moduleb.TypeB, b2: moduleb.TypeB) -> moduleb.TypeB:
30
30
 
31
31
  b = b1 + b2
32
32
 
33
33
  return b
34
34
 
35
- def func2_a(a1: modulea.TypeA, a2: modulea.TypeA): modulea.TypeA
35
+ def func2_a(a1: modulea.TypeA, a2: modulea.TypeA) -> modulea.TypeA:
36
36
 
37
37
  a = a1 - a2
38
38
 
39
39
  return a
40
40
 
41
- def func2_b(b: moduleb.TypeB, b2: moduleb.TypeB): moduleb.TypeB
41
+ def func2_b(b: moduleb.TypeB, b2: moduleb.TypeB) -> moduleb.TypeB:
42
42
 
43
43
  b = b1 - b2
44
44
 

2

具体的な例を追加

2021/12/11 09:09

投稿

Paalon
Paalon

スコア266

test CHANGED
File without changes
test CHANGED
@@ -5,3 +5,97 @@
5
5
 
6
6
 
7
7
  現在はとりあえず、型ごとに別名を関数のお尻に付けて対処していますが、段々増えてきて煩雑になってきてしまったのでどうにかしたいです。
8
+
9
+
10
+
11
+ 例えば、現在、
12
+
13
+
14
+
15
+ ```python
16
+
17
+ import modulea
18
+
19
+ import moduleb
20
+
21
+
22
+
23
+ def func1_a(a1: modulea.TypeA, a2: modulea.TypeA): modulea.TypeA
24
+
25
+ a = a1 + a2
26
+
27
+ return a
28
+
29
+ def func1_b(b1: moduleb.TypeB, b2: moduleb.TypeB): moduleb.TypeB
30
+
31
+ b = b1 + b2
32
+
33
+ return b
34
+
35
+ def func2_a(a1: modulea.TypeA, a2: modulea.TypeA): modulea.TypeA
36
+
37
+ a = a1 - a2
38
+
39
+ return a
40
+
41
+ def func2_b(b: moduleb.TypeB, b2: moduleb.TypeB): moduleb.TypeB
42
+
43
+ b = b1 - b2
44
+
45
+ return b
46
+
47
+
48
+
49
+ # 関数を使うとき
50
+
51
+
52
+
53
+ func1_a(a1, a2)
54
+
55
+ func1_b(b1, b2)
56
+
57
+ func2_a(a1, a2)
58
+
59
+ func2_b(b1, b2)
60
+
61
+ ```
62
+
63
+
64
+
65
+ こんな感じになっているのを
66
+
67
+
68
+
69
+ ```python
70
+
71
+ func1(a1, a2)
72
+
73
+ func1(b1, b2)
74
+
75
+ func2(a1, a2)
76
+
77
+ func2(b1, b2)
78
+
79
+ ```
80
+
81
+
82
+
83
+ または
84
+
85
+
86
+
87
+ ```python
88
+
89
+ a1.func1(a2)
90
+
91
+ b1.func1(b2)
92
+
93
+ a1.func2(a2)
94
+
95
+ b1.func2(b2)
96
+
97
+ ```
98
+
99
+
100
+
101
+ として管理したいということです。

1

追記

2021/12/11 09:07

投稿

Paalon
Paalon

スコア266

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,7 @@
1
1
  普段 Julia を書いているのですが、Python でどう管理すればよいのか分からないことがあります。
2
2
 
3
3
  クラスによって異なる実装になるかもしれないのですが、同じ意味の値を返す関数をいろんな既存のモジュールのクラスについて定義したいのですが、やり方がよく分かりません。自作のモジュールなら、そのモジュールをいじって、該当クラスのメソッドを追加すれば良いだけですが、既存のモジュールにその関数を別名を付けないで実装するにはどうすれば良いのでしょうか?Python では、同じ名前を付けたい場合は、関数の引数の型に関するオーバーロードはないので、多くの場合、クラスのメソッドとしてその機能を提供すると思うのですが、既存のクラスをいじりたい場合はどうすれば良いのでしょうか?
4
+
5
+
6
+
7
+ 現在はとりあえず、型ごとに別名を関数のお尻に付けて対処していますが、段々増えてきて煩雑になってきてしまったのでどうにかしたいです。