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

Python運算符重載用法實例分析

 更新時間:2015年06月01日 16:00:05   作者:adupt  
這篇文章主要介紹了Python運算符重載用法,實例分析了幾種常見的Python運算符重載的使用技巧,需要的朋友可以參考下

本文實例講述了Python運算符重載用法。分享給大家供大家參考。具體如下:

在Python語言中提供了類似于C++的運算符重在功能:

一下為Python運算符重在調(diào)用的方法如下:

Method         Overloads         Call for
__init__        構(gòu)造函數(shù)         X=Class()
__del__         析構(gòu)函數(shù)         對象銷毀
__add__         +                 X+Y,X+=Y
__or__         |                 X|Y,X|=Y
__repr__        打印轉(zhuǎn)換         print X,repr(X)
__str__         打印轉(zhuǎn)換         print X,str(X)
__call__        調(diào)用函數(shù)         X()
__getattr_    限制             X.undefine
__setattr__     取值             X.any=value
__getitem__     索引             X[key],
__len__         長度             len(X)
__cmp__         比較             X==Y,X<Y
__lt__         小于             X<Y
__eq__         等于             X=Y
__radd__        Right-Side +         +X
__iadd__        +=                 X+=Y
__iter__        迭代             For In

1. 減法重載

class Number:  
  def __init__(self, start):  
    self.data = start  
  def __sub__(self, other): #minus method  
    return Number(self.data - other)  
number = Number(20)  
y = number – 10 # invoke __sub__ method 
class Number: 
  def __init__(self, start): 
    self.data = start 
  def __sub__(self, other): #minus method 
    return Number(self.data - other) 
number = Number(20) 
y = number – 10 # invoke __sub__ method

2. 迭代重載

class indexer:  
  def __getitem__(self, index): #iter override  
    return index ** 2 
X = indexer()  
X[2]  
for i in range(5):  
  print X[i] 
class indexer: 
  def __getitem__(self, index): #iter override 
    return index ** 2 
X = indexer() 
X[2] 
for i in range(5): 
  print X[i]

3. 索引重載

class stepper:  
  def __getitem__(self, i):  
    return self.data[i]  
X = stepper()  
X.data = 'Spam' 
X[1] #call __getitem__  
for item in X: #call __getitem__  
  print item 
class stepper: 
  def __getitem__(self, i): 
    return self.data[i] 
X = stepper() 
X.data = 'Spam' 
X[1] #call __getitem__ 
for item in X: #call __getitem__ 
   print item

4. getAttr/setAttr重載

class empty:  
  def __getattr__(self,attrname):  
    if attrname == 'age':  
      return 40 
    else:  
      raise AttributeError,attrname  
X = empty()  
print X.age #call__getattr__  
class accesscontrol:  
  def __setattr__(self, attr, value):  
    if attr == 'age':  
      # Self.attrname = value loops!  
      self.__dict__[attr] = value  
    else:  
      print attr  
      raise AttributeError, attr + 'not allowed' 
X = accesscontrol()  
X.age = 40   #call __setattr__  
X.name = 'wang' #raise exception 
class empty: 
  def __getattr__(self,attrname): 
    if attrname == 'age': 
      return 40 
    else: 
      raise AttributeError,attrname 
X = empty() 
print X.age #call__getattr__ 
class accesscontrol: 
  def __setattr__(self, attr, value): 
    if attr == 'age': 
      # Self.attrname = value loops! 
      self.__dict__[attr] = value 
    else: 
      print attr 
      raise AttributeError, attr + 'not allowed' 
X = accesscontrol() 
X.age = 40   #call __setattr__ 
X.name = 'wang' #raise exception

5. 打印重載

class adder:  
  def __init__(self, value=0):  
    self.data = value  
  def __add__(self, other):  
    self.data += other  
class addrepr(adder):  
  def __repr__(self):  
    return 'addrepr(%s)' % self.data  
x = addrepr(2) #run __init__  
x + 1    #run __add__  
print x   #run __repr__ 
class adder: 
  def __init__(self, value=0): 
    self.data = value 
  def __add__(self, other): 
    self.data += other 
class addrepr(adder): 
  def __repr__(self): 
    return 'addrepr(%s)' % self.data 
x = addrepr(2) #run __init__ 
x + 1    #run __add__ 
print x   #run __repr__

6. Call調(diào)用函數(shù)重載

class Prod:  
  def __init__(self, value):  
    self.value = value  
  def __call__(self, other):  
    return self.value * other  
p = Prod(2) #call __init__  
print p(1) #call __call__  
print p(2) 
class Prod: 
  def __init__(self, value): 
    self.value = value 
  def __call__(self, other): 
    return self.value * other 
p = Prod(2) #call __init__ 
print p(1) #call __call__ 
print p(2)

7. 析構(gòu)函數(shù)重載

class Life:  
  def __init__(self, name='name'):  
    print 'Hello', name  
    self.name = name  
  def __del__(self):  
    print 'Goodby', self.name  
brain = Life('Brain') #call __init__  
brain = 'loretta'  # call __del__

希望本文所述對大家的Python程序設(shè)計有所幫助。

相關(guān)文章

  • Python datetime模塊高效處理日期和時間的方法

    Python datetime模塊高效處理日期和時間的方法

    Python內(nèi)置的datetime模塊提供了強大的工具來處理這些需求,本文將全面介紹datetime模塊的使用方法,從基礎(chǔ)操作到高級技巧,幫助你掌握Python中的日期時間處理,感興趣的朋友一起看看吧
    2025-05-05
  • python中使用docx模塊處理word文檔

    python中使用docx模塊處理word文檔

    這篇文章主要介紹了python中使用docx模塊處理word文檔的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 利用Python快速繪制海報地圖

    利用Python快速繪制海報地圖

    這篇文章主要介紹了如何利用Python快速繪制海報級別的地圖,,需要的朋友可以參考下面文章的詳細(xì)介紹
    2021-09-09
  • 一篇文章搞懂Python反斜杠的相關(guān)問題

    一篇文章搞懂Python反斜杠的相關(guān)問題

    這篇文章主要給大家介紹了如何通過一篇文章搞懂Python反斜杠的相關(guān)問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python兩個字典鍵同值相加的幾種方法

    Python兩個字典鍵同值相加的幾種方法

    今天小編就為大家分享一篇關(guān)于Python兩個字典鍵同值相加的幾種方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 解決python 無法加載downsample模型的問題

    解決python 無法加載downsample模型的問題

    今天小編就為大家分享一篇解決python 無法加載downsample模型的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python 下劃線的不同用法

    python 下劃線的不同用法

    在本文中,我們將介紹 Python 中 _ 字符的不同用法。就像 Python 中的許多其他內(nèi)容一樣,我們會看到 “_” 的不同用法主要是慣例問題。這里我們將介紹幾種不同的情況。
    2020-10-10
  • python的ArgumentParser使用及說明

    python的ArgumentParser使用及說明

    這篇文章主要介紹了python的ArgumentParser使用及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python使用minidom讀寫xml的方法

    Python使用minidom讀寫xml的方法

    這篇文章主要介紹了Python使用minidom讀寫xml的方法,實例分析了使用minidom模塊操作XML文件的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • python中的格式化輸出用法總結(jié)

    python中的格式化輸出用法總結(jié)

    這篇文章主要介紹了python中的格式化輸出用法,分析了Python格式化輸出的種類并結(jié)合實例形式總結(jié)了針對浮點數(shù)的格式化輸出方法,需要的朋友可以參考下
    2016-07-07

最新評論

攀枝花市| 高州市| 英德市| 镇巴县| 桦川县| 呼玛县| 新源县| 新龙县| 桑植县| 永丰县| 云林县| 珠海市| 奎屯市| 江安县| 深州市| 福建省| 迭部县| 桐城市| 安岳县| 东港市| 台中县| 绥宁县| 登封市| 安义县| 沂南县| SHOW| 门头沟区| 江陵县| 萍乡市| 山西省| 工布江达县| 托里县| 江油市| 栾川县| 望都县| 旬邑县| 洛隆县| 凤台县| 通道| 高陵县| 东港市|