#異常處理
#假如你的程序中有一些無效的語句,會怎麼樣呢?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')#刪除成員,臨時在內存中刪除成員
#結論反射是通過字符串的形式操作對象相關的成員
'''