teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

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

2021/12/11 09:10

投稿

Paalon
Paalon

スコア266

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): 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): 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): 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): 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

具体的な例を追加

2021/12/11 09:09

投稿

Paalon
Paalon

スコア266

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

追記

2021/12/11 09:07

投稿

Paalon
Paalon

スコア266

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