標籤:python 函數
一.類的定義--class關鍵字
類的組成包括成員變數(name,age)和成員函數(who)
class User: name=‘zhzhgo‘ age=25def who(self): print "I‘m "+self.name
對象的建立
u=User()u.ageu.who()
構造方法和析構方法
__init__() 對象產生的時候執行構造方法
__def__() 對象銷毀的時候執行析構方法
二.類的繼承--聲明類的時候括弧中寫要繼承的父類
類的繼承衍生出類子類,子類可以繼承或重寫父類的方法,子類可以自訂新的方法或者成員變數,比如學生類可以繼承使用者類
class User(object): name=‘‘ age=‘‘ def __init__(self,name,age): self.name=name self.age=age def who(self): print "My name is "+self.name+",I‘m "+str(self.age)+" years old."class Student(User): height=‘‘ def __init__(self,name,age,height): User.__init__(self,name,age) self.height=height def who(self): User.who(self) #super(Student,self).who() print "My height is "+ str(self.height) Student("zhzhgo",25,168).who()
>>>
My name is zhzhgo,I‘m 25 years old.
My height is 168
>>>
繼承嵌套,即多重繼承
class 類名(父類1,父類2,....,父類n) <語句1>
需要注意括弧中父類的順序,如果父類中有相同的方法名,而在子類使用時未指定,python從左至右搜尋,即方法在子類中未找到時,從左至右尋找父類中是否包含該方法
三.執行個體方法、類方法、靜態方法
執行個體方法,類方法,靜態方法都可以通過執行個體或者類調用,只不過執行個體方法通過類調用時需要傳遞執行個體的引用(python 3可以傳遞任意對象,其他版本會報錯)
執行個體方法針對的是執行個體,第一個參數是self,普通對象方法至少需要一個self參數,代表類對象執行個體;類方法針對的是類,@classmethod 它表示接下來的是一個類方法,類方法的第一個參數cls,它們都可以繼承和重新定義;靜態方法用於作為程式中的共用資源,直接通過類去調用,不用執行個體化對象,不需要self參數,可以認為是全域函數,@staticmethod 它表示接下來的是一個靜態方法
class Test1(object): def test1(self): #定義了執行個體方法 print("object") @classmethod def test2(cls): #定義了類方法 print("class") @staticmethod def test3(): #定義了靜態方法 print("static")f1=Test1()#f1.test1(); #通過執行個體調用Test1.test1(f1) #直接通過類的方式調用,但是需要自己傳遞執行個體引用Test1.test2()print "--------------------"#如果Test1有子類,並且子類覆蓋了這個類方法,最終會調用子類的方法並傳遞子類的類對象class Test2(Test1): @classmethod def test2(cls): print(cls) print("test2 object")f2=Test2()f2.test2()print "--------------------"f1.test3(); #使用執行個體調用Test1.test3(); #直接靜態方式調用
>>>
object
class
--------------------
<class ‘__main__.Test2‘>
test2 object
--------------------
static
static
>>>
本文出自 “今日的努力,明日的成功!” 部落格,請務必保留此出處http://zhzhgo.blog.51cto.com/10497096/1677290
python函數介紹