亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

direktori cari
Python是什么? Python 3 教程 Python3 基礎(chǔ)語(yǔ)法 編碼 Python3 基本數(shù)據(jù)類型 Python解釋器 Python 注釋 Python 數(shù)字運(yùn)算 Python 字符串 Python 列表 Python 編程第一步 Python 條件控制 Python 循環(huán) Python 函數(shù) Python 數(shù)據(jù)結(jié)構(gòu) Python 模塊 Python 輸入和輸出 Python 錯(cuò)誤和異常 Python 類 Python 標(biāo)準(zhǔn)庫(kù)概覽 Python Hello World 實(shí)例 Python 數(shù)字求和 Python 平方根 Python 二次方程 Python 計(jì)算三角形的面積 Python 隨機(jī)數(shù)生成 Python 攝氏溫度轉(zhuǎn)華氏溫度 Python 交換變量 Python if 語(yǔ)句 Python 判斷字符串是否為數(shù)字 Python 判斷奇數(shù)偶數(shù) Python 判斷閏年 Python 獲取最大值函數(shù) Python 質(zhì)數(shù)判斷 Python 階乘實(shí)例 Python 九九乘法表 Python 斐波那契數(shù)列 Python 阿姆斯特朗數(shù) Python 十進(jìn)制轉(zhuǎn)二進(jìn)制、八進(jìn)制、十六進(jìn)制 Python ASCII碼與字符相互轉(zhuǎn)換 Python 最大公約數(shù)算法 Python 最小公倍數(shù)算法 Python 簡(jiǎn)單計(jì)算器實(shí)現(xiàn) Python 生成日歷 Python 使用遞歸斐波那契數(shù)列 Python 文件 IO Python 字符串判斷 Python 字符串大小寫轉(zhuǎn)換 Python 計(jì)算每個(gè)月天數(shù) Python 獲取昨天日期 Python list 常用操作 Python3 實(shí)例
watak

Python 類



和其它編程語(yǔ)言相比,Python 在盡可能不增加新的語(yǔ)法和語(yǔ)義的情況下加入了類機(jī)制。

Python中的類提供了面向?qū)ο缶幊痰乃谢竟δ埽侯惖睦^承機(jī)制允許多個(gè)基類,派生類可以覆蓋基類中的任何方法,方法中可以調(diào)用基類中的同名方法。

對(duì)象可以包含任意數(shù)量和類型的數(shù)據(jù)。

類定義

語(yǔ)法格式如下:

class?ClassName:
????<statement-1>
????.
????.
????.
????<statement-N>

類實(shí)例化后,可以使用其屬性,實(shí)際上,創(chuàng)建一個(gè)類之后,可以通過(guò)類名訪問(wèn)其屬性。

類對(duì)象

類對(duì)象支持兩種操作:屬性引用和實(shí)例化。

屬性引用使用和 Python 中所有的屬性引用一樣的標(biāo)準(zhǔn)語(yǔ)法:obj.name。

類對(duì)象創(chuàng)建后,類命名空間中所有的命名都是有效屬性名。所以如果類定義是這樣:

class?MyClass:
????"""A?simple?example?class"""
????i?=?12345
????def?f(self):
????????return?'hello?world'

實(shí)例化類:

x?=?MyClass()

以上創(chuàng)建了一個(gè)新的類實(shí)例并將該對(duì)象賦給局部變量 x,x 為空的對(duì)象。

很多類都傾向于將對(duì)象創(chuàng)建為有初始狀態(tài)的。因此類可能會(huì)定義一個(gè)名為 __init__() 的特殊方法(構(gòu)造方法),像下面這樣:

def?__init__(self):
????self.data?=?[]

類定義了 __init__() 方法的話,類的實(shí)例化操作會(huì)自動(dòng)調(diào)用 __init__() 方法。所以在下例中,可以這樣創(chuàng)建一個(gè)新的實(shí)例:

x?=?MyClass()

當(dāng)然, __init__() 方法可以有參數(shù),參數(shù)通過(guò) __init__() 傳遞到類的實(shí)例化操作上。例如:

>>>?class?Complex:
...?????def?__init__(self,?realpart,?imagpart):
...?????????self.r?=?realpart
...?????????self.i?=?imagpart
...
>>>?x?=?Complex(3.0,?-4.5)
>>>?x.r,?x.i
(3.0,?-4.5)

類的方法

在類地內(nèi)部,使用def關(guān)鍵字可以為類定義一個(gè)方法,與一般函數(shù)定義不同,類方法必須包含參數(shù)self,且為第一個(gè)參數(shù):

#類定義
class?people:
????#定義基本屬性
????name?=?''
????age?=?0
????#定義私有屬性,私有屬性在類外部無(wú)法直接進(jìn)行訪問(wèn)
????__weight?=?0
????#定義構(gòu)造方法
????def?__init__(self,n,a,w):
????????self.name?=?n
????????self.age?=?a
????????self.__weight?=?w
????def?speak(self):
????????print("%s?is?speaking:?I?am?%d?years?old"?%(self.name,self.age))


p?=?people('tom',10,30)
p.speak()


繼承

Python 同樣支持類的繼承,如果一種語(yǔ)言不支持繼承就,類就沒(méi)有什么意義。派生類的定義如下所示:

class?DerivedClassName(BaseClassName1):
????<statement-1>
????.
????.
????.
????<statement-N>

需要注意圓括號(hào)中基類的順序,若是基類中有相同的方法名,而在子類使用時(shí)未指定,python從左至右搜索 即方法在子類中未找到時(shí),從左到右查找基類中是否包含方法。

BaseClassName(示例中的基類名)必須與派生類定義在一個(gè)作用域內(nèi)。除了類,還可以用表達(dá)式,基類定義在另一個(gè)模塊中時(shí)這一點(diǎn)非常有用:

class?DerivedClassName(modname.BaseClassName):

實(shí)例

#單繼承示例
class?student(people):
????grade?=?''
????def?__init__(self,n,a,w,g):
????????#調(diào)用父類的構(gòu)函
????????people.__init__(self,n,a,w)
????????self.grade?=?g
????#覆寫父類的方法
????def?speak(self):
????????print("%s?is?speaking:?I?am?%d?years?old,and?I?am?in?grade?%d"%(self.name,self.age,self.grade))



s?=?student('ken',20,60,3)
s.speak()


多重繼承

Python同樣有限的支持多繼承形式。多繼承的類定義形如下例:

class?DerivedClassName(Base1,?Base2,?Base3):
????<statement-1>
????.
????.
????.
????<statement-N>

需要注意圓括號(hào)中父類的順序,若是父類中有相同的方法名,而在子類使用時(shí)未指定,python從左至右搜索 即方法在子類中未找到時(shí),從左到右查找父類中是否包含方法。

#另一個(gè)類,多重繼承之前的準(zhǔn)備
class?speaker():
????topic?=?''
????name?=?''
????def?__init__(self,n,t):
????????self.name?=?n
????????self.topic?=?t
????def?speak(self):
????????print("I?am?%s,I?am?a?speaker!My?topic?is?%s"%(self.name,self.topic))

#多重繼承
class?sample(speaker,student):
????a?=''
????def?__init__(self,n,a,w,g,t):
????????student.__init__(self,n,a,w,g)
????????speaker.__init__(self,n,t)

test?=?sample("Tim",25,80,4,"Python")
test.speak()#方法名同,默認(rèn)調(diào)用的是在括號(hào)中排前地父類的方法


類屬性與方法

類的私有屬性

__private_attrs:兩個(gè)下劃線開(kāi)頭,聲明該屬性為私有,不能在類地外部被使用或直接訪問(wèn)。在類內(nèi)部的方法中使用時(shí) self.__private_attrs。

類的方法

在類地內(nèi)部,使用def關(guān)鍵字可以為類定義一個(gè)方法,與一般函數(shù)定義不同,類方法必須包含參數(shù)self,且為第一個(gè)參數(shù)

類的私有方法

__private_method:兩個(gè)下劃線開(kāi)頭,聲明該方法為私有方法,不能在類地外部調(diào)用。在類的內(nèi)部調(diào)用 slef.__private_methods。

類的專有方法:

  • __init__ 構(gòu)造函數(shù),在生成對(duì)象時(shí)調(diào)用
  • __del__ 析構(gòu)函數(shù),釋放對(duì)象時(shí)使用
  • __repr__ 打印,轉(zhuǎn)換
  • __setitem__按照索引賦值
  • __getitem__按照索引獲取值
  • __len__獲得長(zhǎng)度
  • __cmp__比較運(yùn)算
  • __call__函數(shù)調(diào)用
  • __add__加運(yùn)算
  • __sub__減運(yùn)算
  • __mul__乘運(yùn)算
  • __div__除運(yùn)算
  • __mod__求余運(yùn)算
  • __pow__稱方
Artikel sebelumnya: Artikel seterusnya: