2017-09-18 7 views
1

私はPython3.0を使用しています。リストアイテムを文字列に追加しようとしています。str().join(lst)リストアイテムを文字列として取得できますが、これを行うときにはstr.join(lst) get:Pythonのstr.join()とstr()。join()の違いは何ですか?

TypeError: descriptor 'join' requires a 'str' object but received a 'list'

strとstr()の相違点は何ですか?

+0

に相当します'str =" hello "'これは「機能する」が、ほとんどの場合は間違いです。 [なぜPythonで組み込み関数に値を割り当てることができますか?](https://stackoverflow.com/a/31865529/8379597) – jq170727

答えて

3

strはクラスです。 str()は、そのクラスのコンストラクタを呼び出し、そのクラスのインスタンスを返します。

あなたは通常、とにかくこのような何かをしたい:

", ".join(...) 

私はstr().join(...)"".join(...)の同等ですが、後者は、ほとんどのPythonの開発者に明確であると仮定します。

+0

+1を参照してください。 classmethod 'str.join'が第1引数としてセパレータ文字列を追加し、第2引数としてリストだけを追加することを追加したいかもしれません。これがTypeErrorの由来です。 – Jeronimo

0

join(list)は、strクラスのクラスメソッドです。 str()は、strクラスのオブジェクト(空の文字列オブジェクト)を構築しており、また、joinメソッドを持っています。

str().join(['abc', 'def'])abcdefを返します。これは''.join(['abc', 'def'])に相当します。 str()は空の文字列オブジェクトを作成します。

クラスメソッドjoinを使用して同じ結果を生成することもできます。
str.join('', ['abc', 'def'])を使用して、同じ出力を生成することができます。要約すると

'string'.join([string list])はそう他の場所、例えばstr` `に割り当てたコードに気を付ける場合は時折あなたが実際に` `str.join(LST)を見ることができるstr.join('string', [string list])

関連する問題