2012-04-03 18 views
1

help('string')をPythonインタプリタに入力すると、文字列クラスに関する情報が得られます。そこには、upper()が機能として示されています。しかし、私はの代わりに"hi".upper()のようなメソッドとしてしか呼び出せません。
したがって、組み込みモジュールのドキュメントストリングには、任意のメソッドが関数として指定されると想定できます。しかし、help('list')を実行すると、リストクラスのメソッドがdocstringsのメソッドとして表示されます。
これはなぜですか? doctringsを書いた人が矛盾していた、または異なる人がそれを書いたからだけですか?あるいは、これらのメソッド(ドキュメンテーションの 'メソッド'と呼ばれるものと '関数'と呼ばれるもの)は、実際には異なるプロパティを持っていますか?Pythonヘルプ( 'string')とヘルプ(list)の不一致?

答えて

3

help('string')を検索したところ、stringモジュールのドキュメントストリングを探していました。 help(str)またはhelp('str')の場合は、strタイプのドキュメントストリングを取得します。ここではupperが表示されます。

あなたはここで見ることができるように、stringモジュールから関数upperは実際には機能していない方法である。

>>> upper('hi') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'upper' is not defined 
>>> 'hi'.upper() # method from the str type 
'HI' 
>>> from string import upper 
>>> upper('hi') # function from the string module 
'HI' 
+0

Thnx。 Strはモジュールで定義されたクラスの名前です。____builtin____ stringはモジュールの名前です。 __builtin____モジュール内にすでに定義されているクラスがある場合、別の文字列モジュールを作成したのはなぜですか? – Bentley4

+1

@ Bentley4 'string'モジュールは' str'クラスの中であまり意味を持たない文字列処理に役立つものがたくさんあります。次のようなもの:定数(数字、大文字)、テンプレート、フォーマッタ...詳細[here](http://docs.python.org/library/string.html) – juliomalegria

0

'string'stringです。だから、'list'

listsのための同様の結果を得ることです、あなたがhelp('str')、ないhelp('string')を行うことを意味help([])

+2

いいえ...リストのヘルプを得るために 'help( 'list')'をするのは完全に有効です –

+1

(試してください) –

+1

うわー...私はそれを知らなかった。 'x = 'list''、そして' help(x) 'です。それは予期しない動作です! – veiset

2

を試してみてください。 strは型であり、stringは文字列を処理する関数を提供するモジュールです。

1

あなたは、そのオブジェクトのインスタンスを作成し、そのインスタンス上で助けを呼んでいます。

したがって、これらすべての作業:

help(1) 
help({}) 
help([]) 
help('') 
help(dir) 
help(help) 

ヘルプは、そのインスタンスのdocstringをつかみ、そしてそれをあなたに戻っています。 独自のオブジェクトを作成するときに、便利なドキュメントストリングなどを自由に配置できます。

1

あなたの目には何も問題はありません。

>>> help('string') 

stringモジュールのドキュメントを表示します。そしてupper関数が内部でありますように見えます:

>>> import string 
>>> string.upper('hello') 
'hello' 

私はこのupperは、あなたがしなければ呼ばれるものと同じであることを言うだろう:

>>> 'hello'.upper() 

しかし、私はよく分かりません。

文字列''は、タイプではないstrタイプです。

>>> help('str') 

そして、ここであなたもstr.upper方法が表示されます:これは、おそらく探していることを意味します。

関連する問題