[解決済み] 関数を呼び出すと「bound method」というエラーが出ますが、どういう意味ですか?
2022-03-04 13:34:28
質問
単語解析のクラスを作成しているのですが、何度やっても
bound method Word_Parser.sort_word_list of <__main__.Word_Parser instance at 0x1037dd3b0>
を実行するとエラーが発生します。
class Word_Parser:
"""docstring for Word_Parser"""
def __init__(self, sentences):
self.sentences = sentences
def parser(self):
self.word_list = self.sentences.split()
def sort_word_list(self):
self.sorted_word_list = self.word_list.sort()
def num_words(self):
self.num_words = len(self.word_list)
test = Word_Parser("mary had a little lamb")
test.parser()
test.sort_word_list()
test.num_words()
print test.word_list
print test.sort_word_list
print test.num_words
解決方法は?
ここではエラーはありません。関数を出力しているのですから、関数はそういうものです。
実際に コール を使うには、その後に括弧を付けなければなりません。上ではすでにそうしていますね。関数を呼び出した結果を表示したい場合は、関数が値を返すようにし、そこにprintを入れればいいのです。例えば
print test.sort_word_list()
一方、オブジェクトの状態を変化させ、その状態を別の方法で表示させる関数が必要な場合も、それはそれで問題ありません。
さて、このコードはあるところでは動作するようですが、他のところでは動作しません。その理由を見てみましょう。
-
parser
という変数を設定します。word_list
で、後でprint test.word_list
ということで、うまくいきました。 -
sort_word_list
という変数を設定します。sorted_word_list
で、後でprint test.sort_word_list
-つまり、変数ではなく、関数です。つまり、バインドされたメソッドを見るわけです。(また、Jon Clementsが指摘しているように、これを修正しても、次のように表示されます。None
ということである。sort
を返します)。 -
num_words
という変数を設定します。num_words
しかし、この場合、変数は関数と同じ名前なので、実際には関数をその出力に置き換えていることになり、うまくいくのです。しかし、これはおそらくあなたがしたいことではありません。
(一度だけ計算したものを、何度もアクセスして再計算させることなく使いたい場合などです。しかし、これは良い方法とは言えません。そのためには
@property
または、メモ化デコレータを使用します)。
関連
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] functools.wrapsの機能は何ですか?
-
[解決済み] Pythonの関数定義における->の意味とは?
-
[解決済み] Pythonで子クラスから親クラスのメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] 関数呼び出しにおけるstarとdoublestarの演算子の意味は?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python Decorator 練習問題
-
Python jiabaライブラリの使用方法について説明
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み】ImportError: bs4という名前のモジュールがない(BeautifulSoup)
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。