1.封裝:將資料放在乙個列表或其他序列字典中是基於資料層面的封裝,將常用的**段打包成乙個函式是基於語句層面的封裝,而物件就是這兩種封裝的合一。物件是模擬真實世界(例如乙隻龜靜態資料有顏色、體重等,動態資料有爬、跑等)把資料和**都封裝到一起,即物件=屬性+方法;
2.建立乙個物件也叫做類的例項化,舉例寫乙個類class turtle:在其中可以放上屬性和方法(及函式),(注意這裡的方法裡的引數如果寫了self,類似def climb(self),其中的self就相當於this,呼叫的時候可以不用寫,直接呼叫tt.climb()),然後tt = turtle(),此處tt即物件,可以呼叫類裡的屬性和方法,例如tt.color,就會輸出在類裡設定的屬性color=green的賦值green;
3.物件導向:oo=object oriented,特點:
①封裝:封裝了屬性及方法,封裝是一種資訊隱蔽技術,使得資訊更加安全;
②繼承:子類自動共享父類的屬性和方法的機制,舉例:
>>> class mylist(list):
pass
③多型:不同物件對同一方法響應不同的行動,舉例:
>>> a = a()
>>> b = b()
>>> a.fun()
我是小a
>>> b.fun()
我是小b
4.self:python的self相當於c++的this指標;
5.繼承:calss derivedclassname(baseclassname);被繼承的是父類,子類可以使用父類的屬性和方法,舉例:
>>> class parent:
def hello(self):
print("正在呼叫父類的方法")
>>> class child(parent):
pass #pass就是乙個佔位符
>>> p=parent()
>>> p.hello()
正在呼叫父類的方法
>>> c=child()
>>> c.hello()
正在呼叫父類的方法;
注意:如果子類中定義與父類同名的方法或屬性,則會自動覆蓋父類對應的方法或屬性;
6.想要不覆寫父類方法,有兩個辦法,一是在子類的同名方法中呼叫父類的該方法,二是使用super()函式,舉例重名方法叫做a(),則在子類的a()方法裡寫super.a()就可以了;
7.python支援多重繼承,即可以繼承多個父類,class drivedclassname(base1,base2,base3);
①issubclass(class,classinfo),判斷class是否是classinfo子類,如果是則返回true,需要注意:這是非嚴格的檢查,首先乙個類是被認為是其自身的子類,第二點classinfo可以是類物件組成的元組,只要class是其中任何乙個候選類的子類,則返回true,其餘情況則丟擲typeerror,記住issubclass(a,object)也是返回的true;
②isinstance(object,classinfo),檢查object是否是類classinfo的例項物件,同樣也可傳入由類物件組成的元組;
③hasattr(object,name),attr=attribute屬性,測試乙個物件裡面是否有指定的屬性,舉例:
>>> class c:
def __init__(self,x=0):
self.x=x
>>> c1 = c()
>>> hasattr(c1,'x')
true
注意屬性名需要被引號框起來,否則會報錯;
④getattr(object,name[,default]),返回name屬性的值,如果不存在該name,如果設定了default預設值,則返回預設值
Python自學個人知識點記錄5 函式
1.建立函式使用def關鍵字就行,也可以帶上引數,如ceshi1 ceshi2 name ceshi3 name1,name2 2.可以使用關鍵字return來獲得返回值 3.形式引數parameter,實際引數argument 5.關鍵字引數 傳入實參的時候可以帶上關鍵字引數,例如ceshi1 n...
Python自學個人知識點記錄7 集合
1.集合的用處就是唯一,會自動將集合裡的重複值刪除,例如 num2 num2 2.集合不可以使用位置索引來查詢值 3.建立集合有兩種辦法,第一種用花括號建立類似上1.第二種是使用set 函式,set1 set 1,2,3,4,5 set1 type set1 set 函式的引數也是唯一,可以是列表 ...
知識點記錄
1 jensen不等式 jensen不等式表述如下 如果f是凸函式,x是隨機變數,那麼 特別地,如果f是嚴格凸函式,那麼 e f x f e x 當且僅當p x e x 1,也就是說x是常量。2 unet結構,卷積的三種模式 full,same,valid 其實這三種不同模式是對卷積核移動範圍的不同...