欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁(yè) > 知識(shí)庫(kù) > 解析python高級(jí)異常和運(yùn)算符重載

解析python高級(jí)異常和運(yùn)算符重載

熱門(mén)標(biāo)簽:地圖標(biāo)注自己和別人標(biāo)注區(qū)別 海外網(wǎng)吧地圖標(biāo)注注冊(cè) 孝感營(yíng)銷(xiāo)電話機(jī)器人效果怎么樣 聊城語(yǔ)音外呼系統(tǒng) 打電話機(jī)器人營(yíng)銷(xiāo) 商家地圖標(biāo)注海報(bào) ai電銷(xiāo)機(jī)器人的優(yōu)勢(shì) 南陽(yáng)打電話機(jī)器人 騰訊地圖標(biāo)注沒(méi)法顯示

一、高級(jí)異常

回顧異常相關(guān)的語(yǔ)句:

try-except:用來(lái)捕獲異常的通知

try-finally:用來(lái)做一定要做的事

reise:用來(lái)發(fā)生異常通知

assert:用來(lái)根據(jù)條件來(lái)發(fā)出AssertionError類(lèi)型的異常通知

with語(yǔ)句:

語(yǔ)句: with 表達(dá)式1 [as 變量1],表達(dá)式2 [as 變量2]:

         語(yǔ)句塊

作用:使用于對(duì)資源進(jìn)行訪問(wèn)的場(chǎng)合,確保使用過(guò)程中不管是否發(fā)生異常,都會(huì)執(zhí)行必須的'清理'操作,并釋放資源

如:文件使用后自動(dòng)關(guān)閉;線程中鎖定的自動(dòng)獲取和釋放等

用with語(yǔ)句代替try-finally語(yǔ)句

def read_from_file(filename='info.txt'):
     try:
         with open(filename) as f:
             print("正在讀取文件")
             n = int(f.read())
             print('n=', n)
             print('文件已經(jīng)關(guān)閉')
         # f = open(filename)
         # try:
         #     print("正在讀取文件")
         #     n = int(f.read())
         #     print("n=", n)
         # finally:
         #     f.close()
         #     print("文件已經(jīng)關(guān)閉")
     except OSError:
         print("文件打開(kāi)失敗")
 
 
 read_from_file()

二、環(huán)境管理器

1、類(lèi)內(nèi)有__enter__和__exit__實(shí)例方法的類(lèi)被稱(chēng)為環(huán)境管理器

2、能夠用with語(yǔ)句管理的對(duì)象必須是環(huán)境管理器

3、 __enter__方法將在進(jìn)入with語(yǔ)句時(shí)被調(diào)用,并返回由as變量管理的對(duì)象

4、__exit__將在離開(kāi)with語(yǔ)句時(shí)被調(diào)用,且可以用參數(shù)來(lái)判斷在離開(kāi)with語(yǔ)句時(shí)是否有異常發(fā)生并做出相應(yīng)的處理

class A:
     def __enter__(self):
         print("已進(jìn)入with語(yǔ)句")
         return self  # 返回的對(duì)象將由 as綁定
 
     def __exit__(self, exc_type, exc_val, exc_tb):
         print("已離開(kāi)with語(yǔ)句")
 # a = A()
 with A() as a:
     print("這是with語(yǔ)句內(nèi)的一條語(yǔ)句")
     int(input("請(qǐng)輸入整數(shù): "))

已進(jìn)入with語(yǔ)句

這是with語(yǔ)句內(nèi)的一條語(yǔ)句

請(qǐng)輸入整數(shù): 2

2.1、對(duì)象的屬性管理函數(shù)

1、getattr(obj, name[, default])從一個(gè)對(duì)象得到對(duì)象的屬性;getattr(x, 'y')等同于x.y;當(dāng)屬性不存在時(shí),如果給出default參數(shù),則返回default,如果沒(méi)有給出default則產(chǎn)生一個(gè)AttributeError錯(cuò)誤

2、hasattr(obj, name)用給定的name返回對(duì)象obj是否有此屬性,此種做法可以避免在getattr(obj, name)時(shí)引發(fā)錯(cuò)誤

3、setattr(obj, name, value)給對(duì)象obj的名為name的屬性設(shè)置相應(yīng)的值value, set(x,'y', v) 等同于 x.y = v

4、delattr(obj, name)刪除對(duì)象obj中的name屬性,delattr(x, 'y') 等同于 del x.y

class Car:
     def __init__(self, c, b):
         self.color, self.brand = c, b
 
     def get_car_attr(self, attr_name):
         '''此方法用于獲取對(duì)象的屬性,如果屬性名attr_name
         在此對(duì)象內(nèi)不存在則返回 None
         '''
         return getattr(self, attr_name, None)
 
 c1 = Car('黑色', 'Benz')
 v = c1.get_car_attr('color')
 # try:
 #     v = c1.__dict__['aaaaa']
 # except KeyError:
 #     v = None
 if v is None:
     print("沒(méi)有顏色屬性")
 else:
     print("顏色是:", v)

getatter(obj,name[,default])

三、運(yùn)算符重載

讓自定義的類(lèi)生成的對(duì)象(實(shí)例)能夠使用運(yùn)算符進(jìn)行操作

作用:讓自定義的類(lèi)的實(shí)例像內(nèi)建對(duì)象一樣能夠運(yùn)行運(yùn)算符操作,讓程序簡(jiǎn)單易讀,對(duì)自定義的對(duì)象,將運(yùn)算符賦予新的運(yùn)算規(guī)則

3.1、算術(shù)運(yùn)算符的重載

__add__(self, rhs)      self + rhs    加法
__sub__(self, rhs)       self - rhs    減法
__mul__(self, rhs)       self * rhs    乘法
__truediv__(self, rhs)   self / rhs    除法
__floordiv__(self, rhs)    self // rhs   地板除法
__mod__(self, rhs)       self % rhs    求余
__pow__(self, rhs)       self ** rhs   冪

注: rhs (right hands side) 右手邊

class MyNumber:
     def __init__(self, v):
         self.data = v
 
     def __repr__(self):
        return 'MyNumber(%d)' % self.data
 
     # def myadd(self, other):
     #     v = self.data + other.data
     #     return MyNumber(v)
 
     def __add__(self, other):
        print("__add__被調(diào)用")
         v = self.data + other.data
         return MyNumber(v)
 
     def __sub__(self, rhs):
         v = self.data - rhs.data
         return MyNumber(v)
 
 n1 = MyNumber(100)
 n2 = MyNumber(200)
 # n3 = n1.myadd(n2)
 # n3 = n1.__add__(n2)
 n3 = n1 + n2  # __add__被調(diào)用
 print(n3)   # MyNumber(300)
 n4 = n3 - n2
 print(n4)   # MyNumber(100)
class MyList:
     def __init__(self, iterable):
         self.data = list(iterable)
 
     def __add__(self, rhs):
         return MyList(self.data + rhs.data)
 
     def __repr__(self):
         return 'MyList(%r)' % self.data

     def __mul__(self, rhs):  # rhs 綁定整數(shù)
         return MyList(self.data * rhs)
 
 L1 = MyList([1, 2, 3])
 L2 = MyList([4, 5, 6])
 L3 = L1 + L2  # 等同于L1.__add__(L2)
 print(L3)  # MyList([1,2,3,4,5,6])
 L4 = L2 + L1  # 等同于L2.__add__(L1)
 print(L4)  # MyList([4,5,6,1,2,3])
 L5 = L1 * 2  # L1.__mul__(2)
 print(L5)  # MyList([1,2,3,1,2,3])

四、反向算術(shù)運(yùn)算符的重載

__radd__(self, lhs)      lhs + self    加法
__rsub__(self, lhs)      lhs - self    減法
__rmul__(self, lhs)      lhs * self    乘法
__rtruediv__(self, lhs)    lhs / self    除法
__rfloordiv__(self, lhs)   lhs // self   地板除法
__rmod__(self, lhs)      lhs % self    求余
__rpow__(self, lhs)      lhs ** self   冪

class MyList:
     def __init__(self, iterable):
         self.data = list(iterable)
 
     def __add__(self, rhs):
         return MyList(self.data + rhs.data)
 
     def __repr__(self):
        return 'MyList(%r)' % self.data
 
     def __mul__(self, rhs):  # rhs 綁定整數(shù)
         print('__mul__被調(diào)用')
         return MyList(self.data * rhs)
     def __rmul__(self, lhs):
         print('__rmul__被調(diào)用')
         return MyList(self.data * lhs)
 
 L1 = MyList([1, 2, 3])
 L2 = MyList([4, 5, 6])
 L5 = L1 * 2  # L1.__mul__(2)
 print(L5)  # MyList([1,2,3,1,2,3])
 
 L6 = 2 * L1  # 2.__mul__(L1)
 print(L6)

五、復(fù)合賦值算術(shù)運(yùn)算符的重載

__iadd__(self, rhs)     self += rhs    加法
__isub__(self, rhs)       self -= rhs    減法
__imul__(self, rhs)       self *= rhs    乘法
__itruediv__(self, rhs)   self /= rhs    除法
__ifloordiv__(self, rhs)    self //= rhs   地板除法
__imod__(self, rhs)       self %= rhs    求余
__ipow__(self, rhs)       self **= rhs    冪

class MyList:
    def __init__(self, iterable):
        print("aaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
        self.data = list(iterable)

    def __add__(self, rhs):
        print('__add__被調(diào)用')
        return MyList(self.data + rhs.data)

    def __repr__(self):
        return 'MyList(%r)' % self.data

    def __iadd__(self, rhs):
        print("__iadd__被調(diào)用!!!!")
        self.data.extend(rhs.data)
        return self

L1 = MyList([1, 2, 3])  # aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
L2 = MyList([4, 5, 6])  # aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
L1 += L2  # 當(dāng)沒(méi)有__iadd__方法時(shí),等同于調(diào)用L1 = L1 + L2    __iadd__被調(diào)用!!!!
print(L1)   # MyList([1, 2, 3, 4, 5, 6])

六、比較運(yùn)算符的重載

__lt__(self, rhs)   self rhs      小于
__le__(self, rhs)    self = rhs    小于等于
__gt__(self, rhs)    self > rhs    大于
__ge__(self, rhs)    self >= rhs    大于等于
__eq__(self, rhs)    self == rhs    等于
__ne__(self, rhs)    self != rhs    不等于

注:比較運(yùn)算符通常返回True或False

七、位運(yùn)算符重載

__invert__(self)      ~ self      取反(一元運(yùn)算符)
__and__(self, rhs)    self  rhs 位與
__or__(self, rhs)     self |  rhs 位或
__xor__(self, rhs)    self ^  rhs 位異或
__lshift__(self, rhs)    self rhs 左移
__rshift__(self, rhs)    self >> rhs 右移

八、反向位運(yùn)算符重載

__rand__(self, lhs)    lhs  self 位與
__ror__(self, lhs)    lhs |  self 位或
__rxor__(self, lhs)    lhs ^  self 位異或
__rlshift__(self, lhs)    lhs self 左移
__rrshift__(self, lhs)    lhs >> self 右移

九、復(fù)合賦值位運(yùn)算符重載

__iand__(self, rhs) self =  rhs 位與
__ior__(self, rhs) self |=  rhs 位或
__ixor__(self, rhs) self ^=  rhs 位異或
__ilshift__(self, rhs) self = rhs 左移
__irshift__(self, rhs) self >>= rhs 右移

十、一元運(yùn)算符的重載

__neg__(self) - self 負(fù)號(hào)
__pos__(self)  + self 正號(hào)
__invert__(self) ~ self 取反

一元運(yùn)算符的重載方法:

class 類(lèi)名:
def __xxx__(self):

class MyList:
    def __init__(self, iterable):
        print("__init__被調(diào)用")
        self.data = list(iterable)

    def __repr__(self):
        return 'MyList(%r)' % self.data

    def __neg__(self):
        '''此方法用來(lái)制定 - self 返回的規(guī)則'''
        # L = [-x for x in self.data]
        L = (-x for x in self.data)
        return MyList(L)

L1 = MyList([1, -2, 3, -4])
L2 = -L1
print(L2)

運(yùn)算符重載說(shuō)明:

運(yùn)算符重載不能改變運(yùn)算符的優(yōu)先級(jí)

Python類(lèi)名最好用駝峰命名法:

  • MyList MyRange 大駝峰(所有單詞首字母大寫(xiě),其余小寫(xiě))
  • getStudentAge 小駝峰(第一個(gè)單詞首字母小寫(xiě),其它首字母大寫(xiě))

十一、in / not in 運(yùn)算符的重載

重載方法:

__contains__(self, e) e in self 成員運(yùn)算

class MyList:
    def __init__(self, iterable):
        print("__init__被調(diào)用")
        self.data = list(iterable)

    def __repr__(self):
        return 'MyList(%r)' % self.data

    def __contains__(self, e):
        '''此方法用來(lái)實(shí)現(xiàn) in / not in 運(yùn)算符的重載'''
        print("__contains__被調(diào)用")
        for x in self.data:
            if x == e:
                return True
        return False


L1 = MyList([1, -2, 3, -4])
if -2 in L1:
    print('-2 在 L1 中')
else:
    print('-2 不在 L1中')


# 當(dāng)MyList的類(lèi)內(nèi)重載了__contains__方法,則not in也同時(shí)可用
if -3 not in L1:
    print("-3 不在 L1中")
else:
    print('-3 在 L2中')

十二、索引和切片運(yùn)算符的重載

__getitem__(self, i)     x = self[i] 索引/切片取值
__setitem__(self, i, v)      self[i] = v 索引/切片賦值
__delitem__(self, i)        del self[i] del語(yǔ)句刪除索引等

作用:

讓自定義的類(lèi)型的對(duì)象能夠支持索引和切片操作

class MyList:
    def __init__(self, iterable):
        print("__init__被調(diào)用")
        self.data = list(iterable)

    def __repr__(self):
        return 'MyList(%r)' % self.data

    def __getitem__(self, i):
        print("__getitem__被調(diào)用, i=", i)
        # if type(i) is not int:
        #     raise TypeError
        return self.data[i]

    def __setitem__(self, i, v):
        print("__setitem__被調(diào)用, i=", i, 'v =', v)
        self.data[i] = v  # 修改data綁定的列表


L1 = MyList([1, -2, 3, -4])
v = L1[-1]
print(v)

L1[1] = 2  # 等同于調(diào)用 L1.__setitem__(1, 2)
print(L1)

# 以下操作會(huì)出錯(cuò)
# print(L1[100000000000])
# print(L1['hello'])

十三、slice 構(gòu)造函數(shù)

作用:用于創(chuàng)建一個(gè)Slice切片對(duì)象, 此對(duì)象存儲(chǔ)一個(gè)切片的起始值,終止值和步長(zhǎng)信息

slice(start, stop=None, step=None) 創(chuàng)建一個(gè)切片對(duì)象

slice的對(duì)象的屬性:

  • s.start 切片起始值,默認(rèn)為None
  • s.stop 切片終止值,默認(rèn)為None
  • s.step 切片步長(zhǎng) ,默認(rèn)為None
class MyList:
    def __init__(self, iterable):
        print("__init__被調(diào)用")
        self.data = list(iterable)

    def __repr__(self):
        return 'MyList(%r)' % self.data

    def __getitem__(self, i):
        print("__getitem__被調(diào)用, i=", i)
        if type(i) is int:
            print("正在做索引操作")
        elif type(i) is slice:
            print("正在做切片操作")
            print("切片的起始值:", i.start)
            print("切片的終止值:", i.stop)
            print("切片的步長(zhǎng):", i.step)
        else:
            raise KeyError
        return self.data[i]


L1 = MyList([1, -2, 3, -4, 5, -6])

print(L1[::2])  # 等同于調(diào)用L1[slice(None, None, 2)]

以上就是解析python高級(jí)異常和運(yùn)算符重載的詳細(xì)內(nèi)容,更多關(guān)于python 高級(jí)異常 運(yùn)算符重載的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Python的運(yùn)算符重載詳解
  • Python運(yùn)算符重載詳解及實(shí)例代碼
  • Python運(yùn)算符重載用法實(shí)例分析
  • Python運(yùn)算符重載用法實(shí)例
  • Python 捕獲代碼中所有異常的方法
  • Python同時(shí)處理多個(gè)異常的方法
  • 解決python ThreadPoolExecutor 線程池中的異常捕獲問(wèn)題
  • 使用Python將Exception異常錯(cuò)誤堆棧信息寫(xiě)入日志文件
  • 解決Python 異常TypeError: cannot concatenate ''str'' and ''int'' objects
  • Python 輸出詳細(xì)的異常信息(traceback)方式

標(biāo)簽:撫州 牡丹江 六盤(pán)水 揚(yáng)州 南寧 迪慶 楊凌 聊城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《解析python高級(jí)異常和運(yùn)算符重載》,本文關(guān)鍵詞  解析,python,高級(jí),異常,和,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《解析python高級(jí)異常和運(yùn)算符重載》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于解析python高級(jí)異常和運(yùn)算符重載的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    日韩在线卡一卡二| 波多野结衣中文一区| 女女调教被c哭捆绑喷水百合| 三级在线观看免费大全| 国产色综合久久| 精品制服美女久久| www.狠狠爱| 久久亚洲影视婷婷| 国产一区二区中文字幕| 欧美极品jizzhd欧美18| 国产欧美日本一区视频| 国产成人综合亚洲网站| 国产又色又爽又高潮免费| 欧美国产一区二区在线观看| 国产一区二区三区香蕉| 永久av免费网站| 中文字幕一区二区三区在线不卡 | 一区二区三区欧美视频| 91在线观看地址| 欧美日韩在线三级| 天堂影院一区二区| 扒开jk护士狂揉免费| 亚洲av午夜精品一区二区三区| 欧美三级视频在线观看| 亚洲成av人片www| 亚洲av无码成人精品国产| 欧美tickling网站挠脚心| 国内久久精品视频| 亚洲精品卡一卡二| 一区二区三区四区不卡视频| 麻豆短视频在线观看| 日韩欧美专区在线| 亚洲精品成人天堂一二三| 久久久久亚洲av无码网站| 日韩欧美综合在线| 国产精品福利一区二区三区| 91视视频在线观看入口直接观看www| 欧洲av一区二区嗯嗯嗯啊| 亚洲不卡在线观看| 91中文字幕永久在线| 国产欧美日韩在线视频| 成人网在线免费视频| 欧美日韩视频在线第一区| 全部av―极品视觉盛宴亚洲| 中国1级黄色片| 亚洲精品视频在线看| 中文字幕在线永久| 国产亚洲污的网站| 香蕉网在线视频| 日韩精品影音先锋| 成人精品鲁一区一区二区| 欧美精品久久久久久久多人混战| 久久www免费人成看片高清| 欧美视频www| 亚洲va欧美va国产va天堂影院| 成人在线一级片| 亚洲视频一二三| 成人高清av在线| 91麻豆精品国产91久久久| 国产在线视频一区二区| 欧美亚洲一区二区三区四区| 免费一级片91| 一本一道波多野结衣一区二区| 天天色综合成人网| 99成人在线观看| 午夜av电影一区| 久久久99999| 天堂va蜜桃一区二区三区| 日韩激情小视频| 青青草97国产精品免费观看无弹窗版 | 亚洲AV成人精品| 久久综合网色—综合色88| 91亚洲永久精品| 久久久久久久av麻豆果冻| 伊人影院在线观看视频| 国产午夜精品久久久久久免费视| 岛国av免费观看| 国产精品国产三级国产aⅴ无密码| 怡红院一区二区| 中文字幕中文字幕一区二区| 欧美黑人欧美精品刺激| 亚洲精品免费视频| 影音先锋男人资源在线观看| 天天色天天操综合| 在线看一区二区| 国产激情一区二区三区桃花岛亚洲 | 成人黄色免费网址| 亚洲一级电影视频| 一区二区三区四区五区| 美女一区二区三区| 欧美日本一区二区三区四区| 成人性视频网站| 久久先锋影音av鲁色资源网| 精品人妻伦一二三区久| 亚洲男同性恋视频| 情侣偷拍对白清晰饥渴难耐| 美女网站色91| 91精品啪在线观看国产60岁| 91免费视频大全| 国产精品久久久一本精品| 一本色道久久综合亚洲精品图片| 亚洲免费观看视频| www深夜成人a√在线| 国产一区三区三区| 久久先锋影音av鲁色资源网| 黄色短视频在线观看| 亚洲成人自拍偷拍| 欧美亚洲禁片免费| 91免费在线播放| 亚洲精品大片www| 色婷婷av一区二区| 成人免费黄色大片| 国产精品久久夜| 美女三级黄色片| 高清视频一区二区| 日本一区二区三区视频视频| 手机毛片在线观看| 黑人精品欧美一区二区蜜桃 | 欧美极品jizzhd欧美18| 久久99国产精品成人| 欧美成人性福生活免费看| 在线视频 日韩| 婷婷成人综合网| 日韩亚洲欧美成人一区| 一级国产黄色片| 午夜精品福利在线| 欧美精品一级二级| 屁屁影院国产第一页| 丝袜国产日韩另类美女| 欧美一区二区三区四区在线观看| 伊人网综合视频| 日韩av电影天堂| 精品日韩在线一区| 免费看91的网站| 国产精品亚洲第一区在线暖暖韩国| 国产三级精品在线| 黄色片子在线观看| av在线播放一区二区三区| 亚洲欧美另类在线| 欧美综合天天夜夜久久| 久草免费资源站| 日本女人一区二区三区| 26uuu欧美日本| 亚洲欧美卡通动漫| 成人免费看的视频| 一区二区三区精品在线观看| 欧美日韩精品欧美日韩精品| 亚洲图片综合网| 久久精品免费观看| 中文字幕av不卡| 国产iv一区二区三区| 国产酒店精品激情| 欧美国产成人在线| 在线看不卡av| 国产精品久久久免费观看| 狠狠色综合日日| 国产精品传媒入口麻豆| 欧美日韩一区小说| www.中文字幕av| 成人午夜免费电影| 亚洲第四色夜色| 日韩美女视频在线| 欧美一级特黄高清视频| 91在线观看视频| 蜜臀久久99精品久久久久宅男| 国产日韩欧美精品电影三级在线| 一区视频免费观看| 成熟妇人a片免费看网站| 美女一区二区久久| 国产精品盗摄一区二区三区| 9191成人精品久久| www中文在线| 91蜜桃免费观看视频| 日本免费在线视频不卡一不卡二| 国产欧美一区二区在线| 欧美午夜精品免费| 第一次破处视频| 乳色吐息在线观看| 狠狠色丁香婷婷综合| 一区二区视频在线| 精品国产精品网麻豆系列| 一本大道av一区二区在线播放| 中文字幕天堂网| 国产999精品久久久久久绿帽| 亚洲一卡二卡三卡四卡无卡久久| xvideos.蜜桃一区二区| 色8久久人人97超碰香蕉987| 老牛影视av老牛影视av| 99久久精品免费精品国产| 蜜臂av日日欢夜夜爽一区| 亚洲精品视频在线观看网站| ww久久中文字幕| 精品1区2区3区| 免费在线观看黄色小视频| 亚洲第一黄色网址| 99免费精品在线观看| 九色porny丨国产精品| 亚洲综合免费观看高清完整版 | www.亚洲色图| 久久激五月天综合精品|