Python編程基礎(中國mooc)3

動態擴展類與實例:

Python作爲一種動態語言,除了可以在定義類時定義屬性和方法外,還可以動態地爲已經創建的對象綁定新的屬性和方法。

在給對象綁定方法時,需要使用types模塊中的MethodType方法,其第一個參數是要綁定的函數名,第二個參數是綁定的對象名。

給一個對象綁定方法後,只能通過該對象調用該方法,其他未綁
定該方法的對象則不能調用。例如,沒有爲stu2對象綁定SetName
方法,因此,如果將第15行前面的註釋符取消,則程序運行時系
統會報錯。
而第12行爲Student類綁定了SetSno方法,則Student類中的所有實
例對象都有該方法。

 

 

 

構造方法:

構造方法是Python類中的內置方法之一,它的方法名爲__init__,在創建一個類對象時會自動執行,負責完成新創建對象的初始化工作。

 

 

 

析構方法:

析構方法是類的另一個內置方法,它的方法名爲__del__,在銷燬一個類對象時會自動執行,負責完成待銷燬對象的資源清理工作,如關閉文件等。
提示:類對象銷燬有如下三種情況:
(1)局部變量的作用域結束。
(2)使用del刪除對象。
(3)程序結束時,程序中的所有對象都將被銷燬。

 

 

繼承的概念:

繼承允許開發者基於已有的類創建新的類。
如果一個類C1通過繼承已有類C而創建,則將C1稱作子類(sub class),將C稱做基類、父類或超類(base class、super class)。
子類會繼承父類中定義的所有屬性和方法,另外也能夠在子類中增加新的屬性和方法。
如果一個子類只有一個父類,則將這種繼承關係稱爲單繼承;如果一個子類有兩個或更多父類,則將這種繼承關係稱爲多重繼承。

 

 

子類的定義:

 

 

方法重寫和鴨子類型:

方法重寫,是指子類可以對從父類中繼承過來的方法進行重新定義,從而使得子類對象可以表現出與父類對象不同的行爲。

在鴨子類型中,關注的不是對象所屬的類,而是一個對象能夠如何使用。
在Python中編寫一個函數,傳遞實參前其參數的類型並不確定,在函數中使用形參進行操作時只要傳入的對象能夠支持該操作程序就能正常執行。

 

 

super方法:

super方法用於獲取父類的代理對象,以執行已在子類中被重寫的父類方法,其語法格式爲:super([類名,[,對象名或類名]])

super方法有兩個參數:
第一個參數是要獲取父類代理對象的類名。
第二個參數如果傳入對象名,則該對象所屬的類必須是第一個參數
指定的類或該類的子類,找到的父類對象的self會綁定到這個對象上;
如果傳入類名,則該類必須是第一個參數指定的類的子類。
在一個類A的定義中調用super方法時,可以將兩個參數都省略,此
時,super()等價於super(A, self),即獲取A的父類代理對象,且獲取
到的父類代理對象中的self綁定到當前A類對象的self上。

 

 

內置函數isinstance、issubclass、type:

isinstance:

用於判斷一個對象所屬的類是否是指定類或指定類的子類。

issubclass:
用於判斷一個類是否是另一個類的子類。

type:
用於獲取一個對象所屬的類。

如果我們要判斷一個對象的類型是否是指定類或該類的子類,則可以使用isinstance函數。
如果我們要判斷一個對象的類型是否是指定類,則可以使用“type(對象名)==類名”的方式。

 

 

類方法和靜態方法:

類方法是指使用@classmethod修飾的方法,其第一個參數是類本身(而不是類的實例對象)。
類方法的特點是既可以通過類名直接調用,也可以通過類的實例對象調用。


靜態方法是指使用@staticmethod修飾的方法。
與類方法相同,靜態方法既可以直接通過類名調用,也可以通過類的實例對象調用。
與類方法不同的地方在於,靜態方法中沒有類方法中的第一個類參數。

 

 

可變類型和不可變類型:

可變類型:
即可以對該類型對象中保存的元素值做修改,如列表、字典都是可變類型。
不可變類型:
即該類型對象所保存的元素值不允許修改,只能通過給對象整體賦值來修改對象所保存的數據。但此時實際上就是創建了一個新的不可變類型的對象、而不是修改原對象的值,如數字、字符串、元組都是不可變類型。

提示:可變類型的對象和不可變類型的對象的區別在於是否可修改對象中的元素值。對於可變類型的對象,如果對可變類型對象中的元素做修改,則不會創建新對象;而如果直接對其賦值,則也會創建一個新的對象。

 

 

 

通過deepcopy函數實現列表元素複製:

 

列表元素的查找、插入和刪除:

查找:
通過列表中的index方法可以根據指定值查找第一個匹配的列表元素的位置。

>>ls=[1,3,5,3] #創建列表對象,並賦給ls變量
>>print('ls值爲3的元素第一次出現的位置爲:',ls.index(3))

out:
ls值爲3的元素第一次出現的位置爲: 1

 

插入:
通過列表中的insert方法可以將一個元素插入到列表的指定位置,語法格式爲:
ls.insert(index,x)
其作用是將元素x插入到ls列表下標爲index的位置上。

>>lst=[1,2,2,4]
>>lst.insert(2,100)
>>lst

Out[68]:

[1, 2, 100, 2, 4]

在列表的最後添加新元素:
ls.append(x)

 

刪除:
使用del語句可以刪除某個變量或列表中的某個元素。

>>ls=[1,3,5,3]
>>del ls[3]
>>ls
Out[62]:

[1, 3, 5]

如果要刪除列表中的連續多個元素,也可以截取列表中的連續多個元素並將其賦爲空列表。

>>ls=[1,3,5,3]
>>ls[2:]=[]
>>ls
Out[65]:

[1, 3]

 

 

統計列表中元素出現的次數:

法一:

>>ls=[1,3,5,3]
>>ct=0
>>for x in range(len(ls)):
    if ls[x]==3:
        ct=ct+1

>>print('共%s個3' %(ct))
out:

共2個3

法二:

>>ls=[1,3,5,3]
>>print('ls列表中共%s個3' %(ls.count(3)))

out:
ls列表中共2個3

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章