如何區(qū)分對象方法,類方法和靜態(tài)方法

class A(object):
    def foo(self,x):
        print "executing foo(%s,%s)"%(self,x)

    @classmethod
    def class_foo(cls,x):
        print "executing class_foo(%s,%s)"%(cls,x)

    @staticmethod
    def static_foo(x):
        print "executing static_foo(%s)"%x

a=A()
a.foo(1)
a.class_foo(2)
a.static_foo(3)
print '--------'
A.class_foo(4)
A.static_foo(5)
print '--------'
print a.foo
print a.class_foo
print a.static_foo


executing foo(<__main__.A object at 0x106ad2190>,1)
executing class_foo(<class '__main__.A'>,2)
executing static_foo(3)
--------
executing class_foo(<class '__main__.A'>,4)
executing static_foo(5)
--------
<bound method A.foo of <__main__.A object at 0x106ad2190>>
<bound method type.class_foo of <class '__main__.A'>>
<function static_foo at 0x106ad1500>

解析

對象方法只能用類的實(shí)例對象調(diào)用,A.foo(1)會(huì)報(bào)錯(cuò),對象方法默認(rèn)將對象實(shí)體a傳遞給方法的第一個(gè)參數(shù)(self);
類方法默認(rèn)傳遞給第一個(gè)參數(shù)的是類(class A),通常用變量cls表示,而不是self。類方法既可以用類名調(diào)用也可以用類的實(shí)例調(diào)用。

以上所說默認(rèn)傳遞第一個(gè)參數(shù),為什么呢?
a.foo 僅僅需要一個(gè)參數(shù),是因?yàn)閒oo函數(shù)默認(rèn)是綁定到a這個(gè)對象上的

print a.foo
<bound method A.foo of <__main__.A object at 0x106ad2190>>

a.class_foo 是A綁定到class_foo而不是 a;

最后剩下靜態(tài)方法,說到底它就是一個(gè)方法.a.static_foo只是返回一個(gè)不帶參數(shù)綁定的方法.static_foo和a.static_foo只需要一個(gè)參數(shù).

print a.static_foo
<function static_foo at 0x106ad1500>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,627評(píng)論 18 399
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,032評(píng)論 0 9
  • 1/數(shù)獨(dú)姑娘 數(shù)獨(dú)姑娘曾是我的舍友,我們見證了彼此剛剛踏入職場的矜持與不知所措,我們小心翼翼的在彼此的成長軌跡上行...
    木棉簡兮閱讀 411評(píng)論 0 0
  • 昨天是燒錢的一天。早飯時(shí),我看中一套教拼音的玩具,娃也喜歡,果斷買了,240,管他呢,只要娃喜歡學(xué)就好。娃還說米卡...
    圈_圈_閱讀 142評(píng)論 0 0

友情鏈接更多精彩內(nèi)容