成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

python學(xué)習(xí)筆記-類和實(shí)例

Richard_Gao / 1952人閱讀

摘要:面向?qū)ο笞钪匾母拍顟?yīng)該就是類和實(shí)例了。記得以前學(xué)習(xí)的時(shí)候,有一個(gè)比較簡(jiǎn)單的例子來(lái)解釋類和實(shí)例。構(gòu)造函數(shù)類中可以定義一個(gè)構(gòu)造函數(shù)。構(gòu)造函數(shù)的意思就是類在創(chuàng)建的時(shí)候會(huì)執(zhí)行的函數(shù)。在實(shí)例中通過(guò)構(gòu)造函數(shù)添加的或者在類外動(dòng)態(tài)添加的屬性可以。

面向?qū)ο笞钪匾母拍顟?yīng)該就是類(class)和實(shí)例(instance)了。記得以前學(xué)習(xí)java的時(shí)候,有一個(gè)比較簡(jiǎn)單的例子來(lái)解釋類和實(shí)例。
在汽車制造過(guò)程中,我們需要先設(shè)計(jì)圖紙,讓后再根據(jù)圖紙來(lái)制造實(shí)際的汽車。類就相當(dāng)于圖紙,而實(shí)例則是實(shí)際的汽車。一張圖紙可以造出很多汽車,剛造出的汽車是一樣的,但是后續(xù)可以進(jìn)行個(gè)性化的改裝。
python可以根據(jù)class在內(nèi)存中創(chuàng)建多個(gè)實(shí)例,每個(gè)實(shí)例可以獨(dú)立地添加和修改方法和屬性。

定義類
class Car(Vehicle):
    pass

我們來(lái)說(shuō)明一下,class關(guān)鍵詞來(lái)聲明這是一個(gè)類,緊接著就是類名。后接一個(gè)(),里面是該類所繼承的父類。
在2.7中,一個(gè)類如果沒(méi)有繼承其它類,則可以另其繼承object類。那么這樣定義的就是一個(gè)new style object,即新式類。
如果不聲明繼承自何類,那么定義的則是經(jīng)典類。
例如:

# 定義新式類
class Student(object):
    pass

# 定義經(jīng)典類    
class Student2:
    pass

新式類和經(jīng)典類的區(qū)別出了寫法不一樣外,還存在其它區(qū)別:

新式類的類型是type,經(jīng)典類的類型是classobj。新式類的出現(xiàn)就是為了將所有類的類型統(tǒng)一為type。

對(duì)于多繼承,繼承搜索的順序發(fā)生了改變。(這里不懂)

默認(rèn)屬性發(fā)生了改變

可能還有其它

Python 3.x以上版本所有的類均是新式類,不需要顯式地繼承object

__init__構(gòu)造函數(shù)

類中可以定義一個(gè)構(gòu)造函數(shù)__init__。構(gòu)造函數(shù)的意思就是類在創(chuàng)建的時(shí)候會(huì)執(zhí)行的函數(shù)。__init__函數(shù)的第一參數(shù)是self,指實(shí)例本身。__init__函數(shù)還可以有多個(gè)參數(shù),這些參數(shù)需要在實(shí)例創(chuàng)建的時(shí)候傳入。
例如:

class Student(object):
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

__init__函數(shù)經(jīng)常用于對(duì)實(shí)例屬性進(jìn)行初始化。

類中的函數(shù)

類中的函數(shù)也叫做方法。方法與其它函數(shù)有所區(qū)別,即方法的第一個(gè)參數(shù)永遠(yuǎn)是self,即實(shí)例本身。
創(chuàng)建實(shí)例后,在調(diào)用方法是,并不需要傳入實(shí)例,因?yàn)榫幾g器為自動(dòng)為我們加入實(shí)例。例如:

class Student(object):
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    # 方法的第一個(gè)參數(shù)是self
    def print_name(self):
        print self.name

student = Student("charlie", 20, "male")

#調(diào)用函數(shù)的時(shí)候,并不需要手動(dòng)傳入實(shí)例student
student.print_name()
兩個(gè)特殊的函數(shù)

classmethod和staticmethod。
簡(jiǎn)單粗淺地說(shuō),可以理解成:

classmethod的是定義一些僅僅跟類有關(guān),但是跟實(shí)例無(wú)關(guān)的方法。

staticmethod是一些跟類有關(guān)系的功能,但是其具體的實(shí)現(xiàn)卻又不需要用到類或者實(shí)例的參與。staticmethod叫做靜態(tài)方法。

更多解釋和例子,可以閱讀知乎上的回答:https://www.zhihu.com/questio...

類的屬性

屬性就更加好理解了。
例如我們?cè)O(shè)計(jì)一張制造冰箱的圖紙,我們除了定義冰箱的功能(類的方法)外,還需要定義冰箱的顏色、長(zhǎng)、寬、高、等屬性。類也一樣。

class Fridge(object):
    color = "yellow"
    height = 120
    width = 30
    food = "fish"

    def storage(self):
        print "keep %s fresh" % self.food

fridge = Fridge()
fridge.storage()
類的封裝性

上面我們講了這么多類的特性,其實(shí)類就是一個(gè)數(shù)據(jù)類型。我們把一種數(shù)據(jù)類型封裝成一個(gè)類。
例如一個(gè)學(xué)生具有姓名、年齡、性別等屬性,另外他也有書寫姓名、讀書識(shí)字等功能。我們可以把一個(gè)Student所有的屬性和功能看成一個(gè)整體,那么這就是一個(gè)類。這個(gè)類就是與python中內(nèi)置的其它數(shù)據(jù)類型一樣的數(shù)據(jù)類型,只不過(guò)這是我們自定義的,叫Student。

創(chuàng)建實(shí)例

創(chuàng)建實(shí)例的方法十分簡(jiǎn)單。即:

student = Student(括號(hào)內(nèi)傳入在__init__函數(shù)中定義的參數(shù))

python是一門動(dòng)態(tài)語(yǔ)言。創(chuàng)建好的實(shí)例可以自由地添加屬性。在類中聲明的read-only的屬性,在實(shí)例中不能del。在實(shí)例中通過(guò)構(gòu)造函數(shù)添加的或者在類外動(dòng)態(tài)添加的屬性可以del。
類中的read-only屬性只能通過(guò)類屬性的形式刪除。

class Fridge(object):
    color = "yellow"
    width = 20

    def __init__(self, height):
        self.height = height

    def storage(self):
        print "keep %s fresh"

fridge = Fridge(100)
fridge.name = "Haier"

del fridge.color # AttributeError 報(bào)錯(cuò)
del fridge.height
del fridge.name
del Fridge.width

怎么給實(shí)例或類動(dòng)態(tài)添加方法?先挖個(gè)坑,學(xué)習(xí)了再寫。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/38273.html

相關(guān)文章

  • Python裝飾器學(xué)習(xí)筆記

    摘要:前言最近跟著流暢的和學(xué)習(xí),看到裝飾器部分,有些頭大倒不是因?yàn)楦拍铍y以理解,而是書和網(wǎng)上文章中有些地方有些矛盾之處在簡(jiǎn)單學(xué)習(xí)和實(shí)踐之后,整理出我對(duì)裝飾器的理解如下裝飾器的定義在不同語(yǔ)境下,裝飾器有不一樣的含義,我大致認(rèn)為有種定義一種把另一個(gè)對(duì) 前言 最近跟著《流暢的Python》和《Python Cookbook》學(xué)習(xí),看到裝飾器部分,有些頭大倒不是因?yàn)楦拍铍y以理解,而是書和網(wǎng)上文章中有...

    Cristalven 評(píng)論0 收藏0
  • python3學(xué)習(xí)筆記(1)----基本語(yǔ)法

    摘要:一的基本語(yǔ)法縮進(jìn)統(tǒng)一個(gè)或者個(gè)空格。中的數(shù)據(jù)類型中有個(gè)標(biāo)準(zhǔn)類型數(shù)字字符串列表元組集合字典數(shù)字復(fù)數(shù)在中,只有一種整數(shù)類型,表示長(zhǎng)整型。如則會(huì)顯示,并不是換行??招信c代碼縮進(jìn)不同,空行并不是語(yǔ)法的一部分。我們將首行及后面的代碼組稱為一個(gè)子句。 一、python3的基本語(yǔ)法 1、縮進(jìn)統(tǒng)一(1個(gè)tab或者4個(gè)空格)。 for i in range(10): print (i) ...

    yanwei 評(píng)論0 收藏0
  • python3 學(xué)習(xí)筆記

    摘要:本人很少寫代碼一般都是用的去年時(shí)用寫過(guò)一些收集系統(tǒng)信息的工具當(dāng)時(shí)是邊看手冊(cè)邊寫的如今又要用來(lái)寫一個(gè)生成的工具就又需要查看手冊(cè)了至于為什么不用寫那是因?yàn)榈膸?kù)不兼容永中在這里不得不說(shuō)雖然很火但是一些庫(kù)還是不如多不如兼容性好為了避免以后再出這種事 Python3 Study Notes 本人很少寫 python 代碼, 一般都是用 go 的, 去年時(shí)用 python 寫過(guò)一些收集系統(tǒng)信息的工...

    tuomao 評(píng)論0 收藏0
  • Python Tutorial筆記

    一、類(PT第九章) 9.3.4 方法對(duì)象 class MyClass: A simple example class i = 12345 def f(self): return hello world xf = x.f while True: print xf() 方法的特別之處在于實(shí)例對(duì)象被作為函數(shù)的第一個(gè)參數(shù)傳給了函數(shù)。在我們的示例中,調(diào)用x...

    Hydrogen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<