2017-02-16 15 views
0

私は '呼び出し可能'という概念を理解しようとしています。私はWhat is a "callable" in Python?http://eli.thegreenplace.net/2012/03/23/python-internals-how-callables-work/を読んでいます。Pythonで呼び出し可能でないもの

簡単な言葉で言えば、私は、呼び出し可能メソッドをメソッド、関数、またはクラスとして合計して、__call__メソッドを持つと考えます。これがほぼ真実であると仮定すると、Pythonの「もの」は呼び出すことができないのですが、なぜそうではありませんか?私は何が呼び出され、何ができないのかをよりよく理解しようとしています。

+1

いいえ、なぜそれがインスタンス化されることと関係があると思いますか?そして確かにあなた自身の質問に答えました: '__call__'メソッドを持たないものは呼び出し可能ではありません。 –

+0

これはちょっと変わった質問のようです。特に、「なぜ」という部分を追加した場合は特にそうです。いくつかの「物事」については、それを呼び出すことができないだけのことです。整数、文字列、ブール値、リスト、モジュールなどと同じように、私は、あなたが「もの」が何であるかによって、より具体的になるのに役立つと思います。 –

+0

'ClassName()'はクラスをインスタンス化します。 'function_name()'は関数を実行します。彼らはそれを呼び出すことが何かを意味するので、どちらも呼び出し可能です。 '42()'は何も意味しません。 '" hello "()'は何も意味しません。彼らは呼び出し可能ではありません。 – khelwood

答えて

1

呼び出し可能でないものは、callable()を呼び出した結果がfalseであるものです。例えばだから:

a = 'a' 
print callable(a) 
print callable(a.capitalize) 
>> False 
>> True 

ように文字列を呼び出すことはできませんが、文字列のメソッドは(活用)すべて大文字で文字列のコピーを返し、呼び出し可能です。

l = [1, 2] 
print callable(l) 
>> False 

類似リストは呼び出し可能ではありません。実際、ほとんどのオブジェクトは呼び出し可能ではありません。

class Test(object): 
    my_member = 'A' 

t = Test() 
print callable(t) 
>> False 

print callable(Test) 
>> True 

しかし、あなたは、Testクラスのコンストラクタを見ることができるように私たちは、クラスのインスタンスを構築する方法である、呼び出し可能です。

+0

ありがとう、私は説明を感謝します。 – user61629

関連する問題