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

質問編集履歴

3

誤記を修正

2018/02/18 06:29

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -79,8 +79,7 @@
79
79
 
80
80
  ```
81
81
 
82
- ##回答をいただいて追加の疑問【追記→自分自身のアトリビュートを書き換えないで、
82
+ ##回答をいただいて追加の疑問【追記→自分自身のアトリビュートを書き換えないで、メソッドチェーンを実現する】
83
- メソッドチェーンを実現する】
84
83
 
85
84
  たとえばstr型ですと、
86
85
  ```

2

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

2018/02/18 06:29

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- pythonでメソッドを連続で呼び出すには?(自作のクラス
1
+ pythonでメソッドを連続で呼び出すには?→【メソッドチェーン&アトリビュートを書き換えない方法
body CHANGED
@@ -1,5 +1,6 @@
1
1
  ## やりたいこと
2
2
  python3で自作のクラスを作っているのですが、メソッドを連続で呼び出すということができないかと思って悩んでいます。
3
+ 追記→「メソッドチェーン」です。
3
4
 
4
5
  やりたいのは、
5
6
  ・データ加工1→データ加工2
@@ -78,7 +79,8 @@
78
79
 
79
80
  ```
80
81
 
81
- ##回答をいただいて追加の疑問
82
+ ##回答をいただいて追加の疑問【追記→自分自身のアトリビュートを書き換えないで、
83
+ メソッドチェーンを実現する】
82
84
 
83
85
  たとえばstr型ですと、
84
86
  ```

1

追加の疑問点

2018/02/18 06:28

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -76,4 +76,50 @@
76
76
 
77
77
  AttributeError: 'str' object has no attribute 'p'
78
78
 
79
- ```
79
+ ```
80
+
81
+ ##回答をいただいて追加の疑問
82
+
83
+ たとえばstr型ですと、
84
+ ```
85
+ test=" abc "
86
+
87
+ print(test.strip().title())
88
+ #Abc
89
+
90
+ print(test)
91
+ # abc
92
+ ```
93
+
94
+ という風になり、自分自身のアトリビュートを書き換えないで、
95
+ メソッドチェーンが可能になっていると思います。
96
+ これはどのようにしたら実現できるでしょうか。
97
+
98
+ 自分なりに考えたところでは、
99
+
100
+ ```
101
+ class HtmlTag():
102
+ def __init__(self,text):
103
+ self._value = text
104
+ self._temp= text
105
+ def p(self):
106
+ self._temp = "<p>{}</p>".format(self._temp)
107
+ return self
108
+ def b(self):
109
+ self._temp = "<b>{}</b>".format(self._temp)
110
+ return self
111
+ def __str__(self):
112
+ return self._value
113
+
114
+ H=HtmlTag("hello")
115
+ print(H.b().p()._temp)
116
+ #<p><b>hello</b></p>
117
+
118
+ print(H._value)
119
+ #hello
120
+ ```
121
+
122
+ という具合にできないわけではないのですが、
123
+ 前記のstr型の例だと、_tempみたいな変な指定はありません。
124
+
125
+ この点もう少しスマートなやり方があるような気がして、よければお教えください。