回答編集履歴

2

追記

2019/07/09 11:53

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -39,3 +39,79 @@
39
39
 
40
40
 
41
41
  文法上は問題無いと思いますが、あまりに実用とかけ離れます。
42
+
43
+
44
+
45
+ 追記
46
+
47
+ ---
48
+
49
+ あ、こういうのなら可能ですよ。`__init__`は内部的に呼ばれます。
50
+
51
+ ```Python
52
+
53
+ class Parent(object):
54
+
55
+ def __init__(self, func):
56
+
57
+ self.func = func
58
+
59
+
60
+
61
+ def __call__(self, mojiretsu):
62
+
63
+ print('start')
64
+
65
+ self.func(mojiretsu)
66
+
67
+ print('end')
68
+
69
+
70
+
71
+ class Child1(Parent):
72
+
73
+ def __init__(self):
74
+
75
+ pass
76
+
77
+
78
+
79
+ @Parent
80
+
81
+ def child1(mojiretsu):
82
+
83
+ print('1: ' + mojiretsu)
84
+
85
+
86
+
87
+ class Child2(Parent):
88
+
89
+ def __init__(self):
90
+
91
+ pass
92
+
93
+
94
+
95
+ @Parent
96
+
97
+ def child2(mojiretsu):
98
+
99
+ print('2: ' + mojiretsu)
100
+
101
+
102
+
103
+ c1 = Child1()
104
+
105
+ c2 = Child2()
106
+
107
+
108
+
109
+ c1.child1('aiueo')
110
+
111
+ c2.child2('12345')
112
+
113
+ ```
114
+
115
+
116
+
117
+ しかしこれも使い勝手は良くなさそうです。

1

追記

2019/07/09 11:53

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -32,6 +32,10 @@
32
32
 
33
33
 
34
34
 
35
- コンストラクタというのが`__init__`メソッドを指すなら、できません。
35
+ コンストラクタというのが`__init__`メソッドを指すなら、有用には扱えません。
36
36
 
37
37
  デコレータとは高階関数を噛ませた再代入に過ぎないからです。
38
+
39
+
40
+
41
+ 文法上は問題無いと思いますが、あまりに実用とかけ離れます。