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