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

Python實現(xiàn)擴展內置類型的方法分析

 更新時間:2017年10月16日 11:39:38   作者:Think-througher  
這篇文章主要介紹了Python實現(xiàn)擴展內置類型的方法,結合實例形式分析了Python嵌入內置類型擴展及子類方式擴展的具體實現(xiàn)技巧,需要的朋友可以參考下

本文實例講述了Python實現(xiàn)擴展內置類型的方法。分享給大家供大家參考,具體如下:

簡介

除了實現(xiàn)新的類型的對象方式外,有時我們也可以通過擴展Python內置類型,從而支持其它類型的數(shù)據(jù)結構,比如為列表增加隊列的插入和刪除的方法。本文針對此問題,結合實現(xiàn)集合功能的實例,介紹了擴展Python內置類型的兩種方法:通過嵌入內置類型來擴展類型和通過子類方式擴展類型。

通過嵌入內置類型擴展

下面例子通過將list對象作為嵌入類型,實現(xiàn)集合對象,并增加了一下運算符重載。這個類知識包裝了Python的列表,以及附加的集合運算。

class Set:
  def __init__(self, value=[]): # Constructor
    self.data = [] # Manages a list
    self.concat(value)
  def intersect(self, other): # other is any sequence
    res = [] # self is the subject
    for x in self.data:
      if x in other: # Pick common items
        res.append(x)
    return Set(res) # Return a new Set
  def union(self, other): # other is any sequence
    res = self.data[:] # Copy of my list
    for x in other: # Add items in other
      if not x in res:
        res.append(x)
    return Set(res)
  def concat(self, value): # value: list, Set...
    for x in value: # Removes duplicates
      if not x in self.data:
        self.data.append(x)
  def __len__(self):     return len(self.data) # len(self)
  def __getitem__(self, key): return self.data[key] # self[i]
  def __and__(self, other):  return self.intersect(other) # self & other
  def __or__(self, other):  return self.union(other) # self | other
  def __repr__(self):     return 'Set:' + repr(self.data) # print()
if __name__ == '__main__':
  x = Set([1, 3, 5, 7])
  print(x.union(Set([1, 4, 7]))) # prints Set:[1, 3, 5, 7, 4]
  print(x | Set([1, 4, 6])) # prints Set:[1, 3, 5, 7, 4, 6]

通過子類方式擴展類型

從Python2.2開始,所有內置類型都能直接創(chuàng)建子類,如list,str,dict以及tuple。這樣可以讓你通過用戶定義的class語句,定制或擴展內置類型:建立類型名稱的子類并對其進行定制。類型的子類型實例,可用在原始的內置類型能夠出現(xiàn)的任何地方。

class Set(list):
  def __init__(self, value = []):   # Constructor
    list.__init__([])        # Customizes list
    self.concat(value)        # Copies mutable defaults
  def intersect(self, other):     # other is any sequence
    res = []             # self is the subject
    for x in self:
      if x in other:        # Pick common items
        res.append(x)
    return Set(res)         # Return a new Set
  def union(self, other):       # other is any sequence
    res = Set(self)         # Copy me and my list
    res.concat(other)
    return res
  def concat(self, value):       # value: list, Set . . .
    for x in value:         # Removes duplicates
      if not x in self:
        self.append(x)
  def __and__(self, other): return self.intersect(other)
  def __or__(self, other): return self.union(other)
  def __repr__(self):    return 'Set:' + list.__repr__(self)
if __name__ == '__main__':
  x = Set([1,3,5,7])
  y = Set([2,1,4,5,6])
  print(x, y, len(x))
  print(x.intersect(y), y.union(x))
  print(x & y, x | y)
  x.reverse(); print(x)

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python編碼操作技巧總結》、《Python數(shù)據(jù)結構與算法教程》、《Python Socket編程技巧總結》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • Python如何用wx模塊創(chuàng)建文本編輯器

    Python如何用wx模塊創(chuàng)建文本編輯器

    在本篇文章里小編給大家整理的是關于Python的wx模塊創(chuàng)建文本編輯器方法,需要的朋友們可以參考下。
    2020-06-06
  • 簡單了解Python變量作用域正確使用方法

    簡單了解Python變量作用域正確使用方法

    這篇文章主要介紹了簡單了解Python變量作用域正確使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Python獲取腳本所在目錄的正確方法

    Python獲取腳本所在目錄的正確方法

    這篇文章主要介紹了Python獲取腳本所在目錄的正確方法,需要的朋友可以參考下
    2014-04-04
  • 關于Python中jieba庫的使用

    關于Python中jieba庫的使用

    這篇文章主要介紹了關于Python中jieba庫的使用,jieba (“結巴”) 是 Python 中一個重要的第三方中文分詞函數(shù)庫,除了分詞,jieba 還提供增加自定義中文單詞的功能,需要的朋友可以參考下
    2023-04-04
  • pygame實現(xiàn)飛機大戰(zhàn)

    pygame實現(xiàn)飛機大戰(zhàn)

    這篇文章主要為大家詳細介紹了pygame實現(xiàn)飛機大戰(zhàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 淺談python對象數(shù)據(jù)的讀寫權限

    淺談python對象數(shù)據(jù)的讀寫權限

    下面小編就為大家?guī)硪黄獪\談python對象數(shù)據(jù)的讀寫權限。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • python中shape[0]與shape[1]的說明

    python中shape[0]與shape[1]的說明

    這篇文章主要介紹了python中shape[0]與shape[1]的說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 在Django下創(chuàng)建項目以及設置settings.py教程

    在Django下創(chuàng)建項目以及設置settings.py教程

    今天小編就為大家分享一篇在Django下創(chuàng)建項目以及設置settings.py教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python 調用PIL庫失敗的解決方法

    Python 調用PIL庫失敗的解決方法

    今天小編就為大家分享一篇Python 調用PIL庫失敗的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python讀取文件內容的三種常用方式及效率比較

    Python讀取文件內容的三種常用方式及效率比較

    這篇文章主要介紹了Python讀取文件內容的三種常用方式及效率比較,結合具體實例形式給出了三種文件讀取的常見方法并對比分析了讀取速度,需要的朋友可以參考下
    2017-10-10

最新評論

拜城县| 秦安县| 赫章县| 肥东县| 绵阳市| 慈利县| 洞口县| 鄂州市| 岢岚县| 镇巴县| 黔西县| 徐汇区| 昌宁县| 鸡东县| 县级市| 新丰县| 乌拉特中旗| 怀安县| 那曲县| 新沂市| 南澳县| 囊谦县| 霍山县| 汶川县| 万全县| 永济市| 崇义县| 潜山县| 柘荣县| 肇东市| 巴彦淖尔市| 进贤县| 四平市| 屯留县| 兴和县| 台北县| 合阳县| 泾阳县| 玉溪市| 崇信县| 高淳县|