1. 程式人生 > 其它 >7.15學習日記

7.15學習日記

今日內容

mixnins機制
# 1.多繼承分主類和輔類,繼承輔類就有該輔類中的功能,不影響子類使用,輔類使用特殊結尾(Minxin,able,ible)
# 2.規範寫法,輔類寫在主類左邊
class Vehicle: # 交通工具
pass


class Flyable():
def fly(self):
'''
飛行功能相應的程式碼
'''
print("I am flying")


class CivilAircraft(Flyable,Vehicle): # 民航飛機
pass


class Helicopter(Flyable,Vehicle): # 直升飛機
pass


class Car(Vehicle): # 汽車並不會飛,但按照上述繼承關係,汽車也能飛了
pass
內建方法
__init__():

__str__():只有在列印物件的時候自動觸發

__del__():1.手動刪除物件的時候自動觸發
2.應用程式執行完畢自動觸發,清理資源

補充:
isinstance('123', str) # 判斷'123'是不是str的例項
issubclass(Foo, object)# Foo是不是object的子類

__getattr__:當你訪問一個不存在的屬性時會觸發

__setattr__:給物件新增/修改屬性會觸發

__call__:當物件加括號呼叫的時候就會自動觸發

__gt__:滿足比較的條件下自動觸發
其他內建方法看部落格
反射
class Student():
school = 'sh'


obj = Student()
x = inpot('請輸入學校')
print(obj.x) # 報錯,因為x是字串

反射的作用就是通過字串操作類屬性或者方法
如果取不到這個值就用緊跟其後的值

print(getattr(obj,x,None))

判斷有沒有類中有沒有這個屬性
print(hasattr(obj,x))

設定類裡的值
setattr(obj,'c',10)

刪除類裡的屬性
delattr(obj,'school')

呼叫函式方法
getattr(obj,'func')()
異常
1.什麼是異常
異常就是錯誤發生的訊號,當遇到該訊號就會丟擲異常,如果不對該異常做處理,那麼此後的程式碼都不再執行

具體來說,異常分為兩種:
1.語法錯誤 # SyntaxError
2.邏輯錯誤
print(x)
儘量把邏輯寫的完美
2.為什麼用異常
為了增強程式碼的可靠性,健壯性,

3.如何使用異常

# NameError: name 'x' is not defined
print(x)

# IndexError: list index out of range
l = [1,2,3]
l[5]

# KeyError: 'k1'
dic = {'k':'v'}
dic['k1']

# AttributeError: 'Foo' object has no attribute 'x'
class Foo():
pass
obj = Foo()
obj.x

# TypeError: 'int' object is not iterable
for i in 123:
pass

# ZeroDivisionError: division by zero
1/0

等等,如何處理
try:
被檢查程式碼
被檢查程式碼
被檢查程式碼
被檢查程式碼
被檢查程式碼
被檢查程式碼
pass
except 異常資訊1 as e:
捕捉到異常資訊
except 異常資訊2 as e:
捕捉到異常資訊
except 異常資訊3 as e:
捕捉到異常資訊
except 異常資訊4 as e:
捕捉到異常資訊
except Exerption as e:
只要前面的錯誤資訊沒有捕捉到,都算這個
else:
當被檢測的程式碼沒有異常時會執行
finally:
不管被檢測的程式碼有沒有異常都會執行
斷言
l = [1,2,3]
if len(l) < 5:
raise Exception('斷言失敗')
print('end---->')

#斷言
assert len(l) = 5
#斷言l的長度必須是5,如果不是5就丟擲異常,是5就當沒寫

# 自定義異常
class Myexception(BaseException):
def __init__(self,msg):
self.msg = msg

def __str__(self):
return '異常資訊:%s' % self.msg

raise Myexception('出異常了')