最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python擴(kuò)展內(nèi)置類型詳解

 更新時(shí)間:2018年03月26日 08:33:34   作者:KLeonard  
這篇文章主要為大家詳細(xì)介紹了Python擴(kuò)展內(nèi)置類型的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

除了實(shí)現(xiàn)新的種類的對(duì)象以外,類有時(shí)有用于擴(kuò)展Python的內(nèi)置類型的功能。主要有以下兩種技術(shù):

通過(guò)嵌入擴(kuò)展類型

下例把一些集合函數(shù)變成方法,而且新增了一些基本運(yùn)算符重載,實(shí)現(xiàn)了新的集合對(duì)象。對(duì)于多數(shù)類而言,這個(gè)類只是包裝了Python列表,以及附加的集合運(yùn)算。

#File setwrapper.py 
 
class Set: 
  def __init__(self,value=[]):#構(gòu)造函數(shù) 
    self.data = [] 
    self.concat(value) 
  def intersect(self,other):#求交集 
    res = [] 
    for x in self.data: 
      if x in other: 
        res.append(x) 
    return Set(res) #返回一個(gè)新的Set 
 
  def union(self,other):#求并集 
    res = self.data[:] #復(fù)制self.data 
    for x in other: 
      if not x in res: 
        res.append(x) 
    return Set(res) 
 
  def concat(self,value): 
    for x in value: 
      if not x in self.data: 
        self.data.append(x) 
 
  def __len__(self): # len(self) 
    return len(self.data)  
 
  def __getitem__(self,key): # self[i] 
    return self.data[key] 
 
  def __and__(self,other): # self & other 
    return self.intersect(other)  
 
  def __or__(self,other): # self | other 
    return self.union(other) 
 
  def __repr__(self): # print 
    return 'Set:' + repr(self.data) 
 
if __name__ == '__main__': #測(cè)試用例 
  x = Set([1,3,5,7]) 
  print(x.union(Set([1,4,7]))) 
  print(x | Set([1,4,6])) 
  print(x[2]) 
  print(x[2:4]) 

重載索引運(yùn)算讓Set類的實(shí)例可以充當(dāng)真正的列表。運(yùn)行結(jié)果如下:

>>>  
Set:[1, 3, 5, 7, 4] 
Set:[1, 3, 5, 7, 4, 6] 

[5, 7] 

通過(guò)子類擴(kuò)展類型

從Python2.2開始,所有內(nèi)置類型都可以直接創(chuàng)建子類。
這樣讓你可以通過(guò)用戶定義的class語(yǔ)句,定制或擴(kuò)展內(nèi)置類型的行為:建立類型名稱的子類并對(duì)其進(jìn)行定制。類型的子類實(shí)例,可以用在原始的內(nèi)置類型能夠出現(xiàn)的任何地方。
例如,假如你對(duì)Python列表偏移值以0開始計(jì)算而不是1開始一直很困擾,這時(shí)你就可以編寫自己的子類,定制列表的核心行為,如下:

# File typesubclass.py 
#Map 1..N to 0..N-1; call back to built-in version 
 
class MyList(list): 
  def __getitem__(self,offset): 
    print('(indexing %s at %s)'%(self,offset)) 
    return list.__getitem__(self,offset-1) 
 
if __name__ == '__main__': 
  print(list('abc')) 
  x = MyList('abc') 
  print(x) 
 
  print(x[1]) 
  print(x[3]) 
  x.append('spam') 
  print(x) 
  x.reverse() 
  print(x) 

在這個(gè)文件中,MyList子類擴(kuò)展了內(nèi)置list類型的__getitem__索引運(yùn)算方法,把索引1到N映射到實(shí)際的0到N-1。運(yùn)行結(jié)果如下:

>>>  
['a', 'b', 'c'] 
['a', 'b', 'c'] 
(indexing ['a', 'b', 'c'] at 1) 

(indexing ['a', 'b', 'c'] at 3) 

['a', 'b', 'c', 'spam'] 
['spam', 'c', 'b', 'a'] 

有關(guān)另一個(gè)類型子類的例子,可以參考bool類型的實(shí)現(xiàn),可以看到bool類是int的子類,有兩個(gè)實(shí)例(True和False),行為就像整數(shù)1和0,但是繼承了定制后的字符串表達(dá)方式來(lái)顯示其變量名。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Django的ListView超詳細(xì)用法(含分頁(yè)paginate)

    Django的ListView超詳細(xì)用法(含分頁(yè)paginate)

    這篇文章主要介紹了Django的ListView超詳細(xì)用法(含分頁(yè)paginate),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • pandas中Series的代碼實(shí)例解析

    pandas中Series的代碼實(shí)例解析

    這篇文章主要介紹了pandas中Series的代碼實(shí)例解析,Series序列,是一種一維的結(jié)構(gòu),類似于一維列表和ndarray中的一維數(shù)組,但是功能比他們要更為強(qiáng)大,Series由兩部分組成:索引index和數(shù)值values,需要的朋友可以參考下
    2023-07-07
  • python基于TCP實(shí)現(xiàn)的文件下載器功能案例

    python基于TCP實(shí)現(xiàn)的文件下載器功能案例

    這篇文章主要介紹了python基于TCP實(shí)現(xiàn)的文件下載器功能,結(jié)合具體實(shí)例形式分析了Python使用socket模塊實(shí)現(xiàn)的tcp協(xié)議下載功能客戶端與服務(wù)器端相關(guān)操作技巧,需要的朋友可以參考下
    2019-12-12
  • 舉例講解Python中的算數(shù)運(yùn)算符的用法

    舉例講解Python中的算數(shù)運(yùn)算符的用法

    這篇文章主要介紹了舉例講解Python中的算數(shù)運(yùn)算符的用法,是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • Python實(shí)現(xiàn)將內(nèi)容轉(zhuǎn)為base64編碼與解碼

    Python實(shí)現(xiàn)將內(nèi)容轉(zhuǎn)為base64編碼與解碼

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)將內(nèi)容轉(zhuǎn)為base64編碼與解碼的示例代碼,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-02-02
  • python3中http協(xié)議提供文件服務(wù)器功能詳解

    python3中http協(xié)議提供文件服務(wù)器功能詳解

    http協(xié)議是互聯(lián)網(wǎng)的通用基礎(chǔ)協(xié)議,也可以利用其來(lái)開發(fā)文件服務(wù)器,給客戶提供文件瀏覽,查看,下載,上傳等功能,這篇文章主要介紹了python3中http協(xié)議提供文件服務(wù)器功能,需要的朋友可以參考下
    2023-06-06
  • Python OpenCV基于霍夫圈變換算法檢測(cè)圖像中的圓形

    Python OpenCV基于霍夫圈變換算法檢測(cè)圖像中的圓形

    這篇文章主要介紹了通過(guò)霍夫圈變換算法檢測(cè)圖像中的圓形,文中用到的函數(shù)為cv2.HoughCircles(),該函數(shù)可以很好地檢測(cè)圓心。感興趣的小伙伴可以了解一下
    2021-12-12
  • Python中高效抓取數(shù)據(jù)的實(shí)戰(zhàn)指南

    Python中高效抓取數(shù)據(jù)的實(shí)戰(zhàn)指南

    在數(shù)據(jù)驅(qū)動(dòng)的時(shí)代,網(wǎng)絡(luò)爬蟲已成為獲取信息的核心工具,本文將用通俗的語(yǔ)言,帶您掌握Python爬蟲結(jié)合代理IP抓取數(shù)據(jù)的全流程,希望對(duì)大家有一定的幫助
    2025-04-04
  • opencv python圖像梯度實(shí)例詳解

    opencv python圖像梯度實(shí)例詳解

    這篇文章主要介紹了opencv python圖像梯度實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • python操作redis的方法

    python操作redis的方法

    這篇文章主要介紹了python操作redis的方法,包括Python針對(duì)redis的連接、設(shè)置、獲取、刪除等常用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07

最新評(píng)論

泽库县| 茶陵县| 英超| 腾冲县| 澜沧| 南陵县| 扶沟县| 临朐县| 手游| 达尔| 呼图壁县| 漯河市| 晴隆县| 法库县| 嘉峪关市| 定远县| 虹口区| 锡林郭勒盟| 吴忠市| 新干县| 文山县| 和田县| 海晏县| 哈密市| 新晃| 昌都县| 米脂县| 武安市| 公主岭市| 松溪县| 黄石市| 大英县| 雷波县| 宾川县| 句容市| 特克斯县| 青海省| 汕头市| 怀宁县| 五河县| 垫江县|