質問編集履歴
3
誤記を修正
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
回答を踏まえて要点を追記しました。
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
追加の疑問点
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
|
+
この点もう少しスマートなやり方があるような気がして、よければお教えください。
|