質問編集履歴

3

誤記を修正

2018/02/18 06:29

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -160,9 +160,7 @@
160
160
 
161
161
 
162
162
 
163
- ##回答をいただいて追加の疑問【追記→自分自身のアトリビュートを書き換えないで、
163
+ ##回答をいただいて追加の疑問【追記→自分自身のアトリビュートを書き換えないで、メソッドチェーンを実現する】
164
-
165
- メソッドチェーンを実現する】
166
164
 
167
165
 
168
166
 

2

回答を踏まえて要点を追記しました。

2018/02/18 06:29

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- pythonでメソッドを連続で呼び出すには?(自作のクラス
1
+ pythonでメソッドを連続で呼び出すには?→【メソッドチェーン&アトリビュートを書き換えない方法
test CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  python3で自作のクラスを作っているのですが、メソッドを連続で呼び出すということができないかと思って悩んでいます。
4
4
 
5
+ 追記→「メソッドチェーン」です。
6
+
5
7
 
6
8
 
7
9
  やりたいのは、
@@ -158,7 +160,9 @@
158
160
 
159
161
 
160
162
 
161
- ##回答をいただいて追加の疑問
163
+ ##回答をいただいて追加の疑問【追記→自分自身のアトリビュートを書き換えないで、
164
+
165
+ メソッドチェーンを実現する】
162
166
 
163
167
 
164
168
 

1

追加の疑問点

2018/02/18 06:28

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -155,3 +155,95 @@
155
155
 
156
156
 
157
157
  ```
158
+
159
+
160
+
161
+ ##回答をいただいて追加の疑問
162
+
163
+
164
+
165
+ たとえばstr型ですと、
166
+
167
+ ```
168
+
169
+ test=" abc "
170
+
171
+
172
+
173
+ print(test.strip().title())
174
+
175
+ #Abc
176
+
177
+
178
+
179
+ print(test)
180
+
181
+ # abc
182
+
183
+ ```
184
+
185
+
186
+
187
+ という風になり、自分自身のアトリビュートを書き換えないで、
188
+
189
+ メソッドチェーンが可能になっていると思います。
190
+
191
+ これはどのようにしたら実現できるでしょうか。
192
+
193
+
194
+
195
+ 自分なりに考えたところでは、
196
+
197
+
198
+
199
+ ```
200
+
201
+ class HtmlTag():
202
+
203
+ def __init__(self,text):
204
+
205
+ self._value = text
206
+
207
+ self._temp= text
208
+
209
+ def p(self):
210
+
211
+ self._temp = "<p>{}</p>".format(self._temp)
212
+
213
+ return self
214
+
215
+ def b(self):
216
+
217
+ self._temp = "<b>{}</b>".format(self._temp)
218
+
219
+ return self
220
+
221
+ def __str__(self):
222
+
223
+ return self._value
224
+
225
+
226
+
227
+ H=HtmlTag("hello")
228
+
229
+ print(H.b().p()._temp)
230
+
231
+ #<p><b>hello</b></p>
232
+
233
+
234
+
235
+ print(H._value)
236
+
237
+ #hello
238
+
239
+ ```
240
+
241
+
242
+
243
+ という具合にできないわけではないのですが、
244
+
245
+ 前記のstr型の例だと、_tempみたいな変な指定はありません。
246
+
247
+
248
+
249
+ この点もう少しスマートなやり方があるような気がして、よければお教えください。