Python異常處理和反射

#異常處理

#假如你的程序中有一些無效的語句,會怎麼樣呢?Python會引發並告訴你那裏有一個錯誤,從而處理這樣的情況但會中斷程序

# 那麼不想中斷程序,就需要捕捉這些異常就要用到異常處理


'''

try:#邏輯代碼在try和except語句塊間

    a=[1,2,3]

    a[6]

except NameError,e:#幾個except只能過濾出一個錯誤,後面的except不會執行

    print(e)

except IndexError,e:

    print(e)

    #raise Exception('錯誤了。。。') #主動觸發異常,內容記錄進e

except Exception,e: #Exception跳過大部分錯誤

    print(e)

else: #主代碼塊執行正常執行

    print 'fvdsf'

finally:#永遠執行,邏輯代碼執行完之後,在finally後的代碼將不被執行

    print 'dddddddddddddddddddddddddd'

class error(Exception):#自定義異常

    def __init__(self,msg=None):

        self.msg=msg

    def __str__(self):

            return self.msg

try:

    raise error('自定義的異常')

except Exception,e:

    print(e)

'''


'''

#Python的反射

#python中的反射功能是由以下四個內置函數提供:hasattr、getattr、setattr、delattr,

# 四個函數分別用於對對象內部執行:檢查是否含有某成員、獲取成員、設置成員、刪除成員。

hasattr() #判斷成員是否存在

getattr() #獲取成員

delattr() #刪除成員

setattr() #設置成員

'''


'''

#實例

class Foo(object):

    def __init__(self):

        self.name = 'wupeiqi'

    def func(self):

        return 'func'

obj = Foo()

print Foo.__dict__

hasattr(obj, 'name')# 檢查是否含有成員

getattr(obj, 'name')# 獲取成員

setattr(obj, 'age', 18)#設置成員,臨時在內存中添加成員

delattr(obj, 'name')#刪除成員,臨時在內存中刪除成員

#結論反射是通過字符串的形式操作對象相關的成員

'''


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