摘要:類方法也叫類型方法,在該方法上一行,用進(jìn)行標(biāo)記。實例方法沒有和標(biāo)記的方法是實例方法。第一個參數(shù)強(qiáng)制為,類實例對象。首先該方法是類內(nèi)部定義的函數(shù),是類方法屬性。上代碼一般方法實例方法類方法靜態(tài)方法一般方法此方法的工作跟類實例均無關(guān)系。
函數(shù):我一般習(xí)慣把跟類無關(guān)叫成函數(shù),而類里面實現(xiàn)的叫方法。
類方法:也叫類型方法,在該方法上一行,用@classmethod進(jìn)行標(biāo)記。
第一個參數(shù)強(qiáng)制為cls,類對象??梢酝ㄟ^這個類對象訪問類屬性,由于沒有傳入類實例對象,所以不能訪問類實例屬性。
靜態(tài)方法:用@staticmethod標(biāo)記的方法。無內(nèi)定的參數(shù),類和實例都可以調(diào)用,方法有多少參數(shù)就必須傳遞多少參數(shù)。
實例方法:沒有@classmethod和@staticmethod標(biāo)記的方法是實例方法。
第一個參數(shù)強(qiáng)制為self,類實例對象??梢酝ㄟ^這個類實例對象訪問類屬性,可以通過類實例對象的__class__屬性訪問類屬性。
假設(shè)該方法有n個參數(shù),類型調(diào)用的時候需要給n個參數(shù)傳參。而實例調(diào)用時則只能傳n-1個參數(shù),因為第一個參數(shù)被系統(tǒng)默認(rèn)傳遞了實例本身。
先來了解一下綁定的概念。
綁定binding:它與方法調(diào)用相關(guān)聯(lián)。
首先該方法是類內(nèi)部定義的函數(shù),是類方法屬性。
類方法中,第一個參數(shù)都是self,表示調(diào)用此方法的實例對象,不需要賦值。
且該方法只有在其所屬類擁有實例對象時,才能被調(diào)用,即方法綁定到類實例對象上了。
沒有類實例對象時,方法就是未綁定狀態(tài)。
上代碼:
def foo(x): # 一般方法 print "executing foo(%s)"%(x) 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 # 靜態(tài)方法 def static_foo(x): print "executing static_foo(%s)"%x a=A()
1、 一般方法
此方法的工作跟類、實例均無關(guān)系??梢灾苯诱{(diào)用foo(x)。
2、 實例方法
在類里定義實例方法時第一個參數(shù)永遠(yuǎn)是實例變量self(綁定類的實例),實例方法的調(diào)用離不開實例,調(diào)用:a.foo(x),其中a是A的實例。
3、 類方法 @classmethod
類方法定義時需要去綁定類(即通過cls)。調(diào)用的時候傳遞的是類,調(diào)用:A.class_foo(x),其中A是類。
4、 靜態(tài)方法@staticmethod
與普通方法一樣,不需要對類或?qū)嵗M(jìn)行綁定,but調(diào)用時需要通過類或?qū)嵗?,調(diào)用:a.static_foo(x)或A.static_foo(x)。
? thanks for watching, keep on updating...
點個贊再走吧
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44794.html
摘要:在中,可以將和裝飾器放在上面和的接口相反,你可以在抽象方法中實現(xiàn)代碼并通過調(diào)用它在上面的例子中,繼承來創(chuàng)建的每個都必須重寫方法,但是可以使用來獲取出處 Python中方法的工作方式 方法是存儲在類屬性中的函數(shù),你可以用下面這種方式聲明和訪問一個函數(shù) >>> class Pizza(object): ... def __init__(self, size): .....
摘要:本篇主要總結(jié)中綁定方法對象和未綁定方法對象的區(qū)別和聯(lián)系。在中使用描述器有翻譯的鏈接來表示具有綁定行為的對象屬性,使用描述器協(xié)議方法來控制對具有綁定行為屬性的訪問,這些描述器協(xié)議方法包括和。其中通過限定的必須使用實例才能調(diào)用。 本篇主要總結(jié)Python中綁定方法對象(Bound method object)和未綁定方法對象(Unboud method object)的區(qū)別和聯(lián)系。主要目的...
小編寫這篇文章的主要目的,是講述一下關(guān)于Python的一些小技巧,包括類方法與靜態(tài)方法之間,存在一些什么區(qū)別呢?怎么從真正的意義上去理解關(guān)于其不同之間的區(qū)別呢?下面就給大家詳細(xì)的解答下?! ∏把浴 ≡趐ython的類中不僅可以有methods,還可以有變量,這些變量稱為類屬性,例如如下代碼中Book類的TYPES即為類屬性?! ☆愔械姆椒ǚ譃?類: 1.實例方法instance method...
摘要:時代,如果需要手動繼承,如多態(tài)多態(tài)是指,不同的子類對象調(diào)用相同的父類方法,會產(chǎn)生多態(tài)多樣結(jié)果的編程特性。 參考:黑馬程序員教程 - Python基礎(chǔ) 面向?qū)ο?OOP三大特性,且三個特性是有順序的: 封裝 繼承 多態(tài) 封裝 指的就是把現(xiàn)實世界的事務(wù),封裝、抽象成編程里的對象,包括各種屬性和方法。這個一般都很簡單,不需要多講。 唯一要注意的就是:推薦從小往大開始封裝、開發(fā)類。比如手槍...
閱讀 2504·2021-11-24 10:29
閱讀 2644·2021-09-24 09:48
閱讀 5752·2021-09-22 15:56
閱讀 3163·2021-09-06 15:00
閱讀 2678·2019-08-30 15:54
閱讀 749·2019-08-30 13:48
閱讀 2927·2019-08-30 11:17
閱讀 3430·2019-08-29 11:20