2016-07-11 3 views
0

Pythonのメソッド/属性に「ファーストクラス」の概念を適用することができますか?文字列オブジェクト'uppercase'を生成するためにPythonのメソッド/属性で "ファーストクラス"の概念を使用できますか?

>>>case='lower' 
>>>'UPPERCASE'.case() 

>>>a=sum 
>>>a([1,2,3]) 
6 

私のような何かをしたいと思います。それ以外の場合は、evalを使用するだけですか?

+2

確か; 'getattr( '大文字、小文字)()'は大文字になります(例:http://stackoverflow.com/q/2612610/3001761参照)。ただし、あなたの例は同等ではありません。最初に関数自体を割り当て、2番目にメソッドの* name *を割り当てます。もっと適切なのは 'case = str.lower'で、' case( 'UPPERCASE') 'が必要です。 – jonrsharpe

+0

文字列オブジェクトのメソッドを追加/変更することはできません。もし 'str'をサブクラス化するならば、クラス定義の中で' case = str.lower'を定義し、 'MyStr( 'UPPERCASE')。case() > '大文字' ' –

+0

どのような "ファーストクラス"の概念が正確に意味するのですか? – mhbashari

答えて

0

あなたはそれをこのように行うことができます。この場合

case = str.lower # Take the lower() method of the str class. 
case('UPPERCASE') # pass your string as the first argument, which is self. 

を、Pythonはselfは、メソッドの最初の引数であることについて、明示的であることを理解して、これは多くのより明確になります。

関連する問題