2011-07-13 20 views
19

Python中的方法在什麼時候獲得get屬性? - 只要他們在課堂上定義?爲什麼Python讓我定義一個沒有任何參數的方法(甚至沒有第一個參數self)?在Python中如何實現方法,`classmethod`和`staticmethod`?

我知道如何使用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行開始。(我確實發現有趣的是,當methodobject.c也存在時,它們在funcobject.c中有標題爲「method」的項目。)

+3

啊,非常好的顯示Python實現mentations。 –

+0

很高興我能幫到你。 – JAB

相關問題