2011-07-13 5 views
19

どの時点でPythonのメソッドはgetプロパティを取得しますか? - 彼らがクラスで定義されるとすぐに?なぜPythonは引数なしでメソッドを定義できますか(最初のself引数でさえも)?メソッド `classmethod`と` staticmethod`はどのようにPythonで実装されていますか?

私はclassmethodstaticmethodの使い方を知っていますが、それらは組み込み関数だと知っていますが、そのように装飾された関数はどうなりますか?

基本的に、私はクラス定義とクラス構築の間に起こる "魔法"について疑問に思います。

答えて

21

これを確認してください。

http://docs.python.org/howto/descriptor.html#static-methods-and-class-methods

またfuncobject.cで、クラスと静的メソッドオブジェクトのためのソースコードを見てみることができます:

http://hg.python.org/cpython/file/69b416cd1727/Objects/funcobject.c

クラスメソッドオブジェクトの定義はライン694上で開始し、一方、静的メソッドのオブジェクト定義は852行から始まります(fooobject.cも存在する場合、funcobject.cに "method"というタイトルのアイテムがあります)。

+3

ああ、主張。 –

+0

うれしい私は助けることができます。 – JAB

関連する問題