質問編集履歴

1

hayataka2049さんの確認について追記

2018/11/19 13:45

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -49,3 +49,37 @@
49
49
 
50
50
 
51
51
  inspect.stackから関数呼び出し時の情報を取得できないかと考えたのですが、.functon は常に元々の関数名('num')が格納されていました。.code_contextからは呼び出し時の情報は拾ってこれるようですが、サンプルコードのように同じ行で複数回呼び出しをしている場合に区別する方法がありません。
52
+
53
+
54
+
55
+ ---
56
+
57
+ hayataka2049さんからの確認についてですが、
58
+
59
+ 今回は技術的な興味からなので、関数のみで対応する方法がないか考えています。
60
+
61
+ 検索してみたところ、classを使う場合は以下のような方法を発見することができました。
62
+
63
+
64
+
65
+ ```pytohn
66
+
67
+ class My_Number:
68
+
69
+ def __init__(self, n):
70
+
71
+ self.n = n # この数字で誰が呼ばれたのか区別する
72
+
73
+
74
+
75
+ def __call__(self, *args, **kwargs):
76
+
77
+ return self.n
78
+
79
+
80
+
81
+ zero, one, two, three = [My_Number(i) for i in range(4)]
82
+
83
+ print(one() + two() + three())
84
+
85
+ ```