標籤:相同 開頭 get init 個數 類比 結果 基本 pytho
1 物件導向知識
- 類(Class): 用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的執行個體。
- 類變數:類變數在整個執行個體化的對象中是公用的。類變數定義在類中且在函數體之外。類變數通常不作為執行個體變數使用。
- 資料成員:類變數或者執行個體變數用於處理類及其執行個體對象的相關的資料。
- 方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。
- 執行個體變數:定義在方法中的變數,只作用於當前執行個體的類。
- 繼承:即一個衍生類別(derived class)繼承基類(base class)的欄位和方法。繼承也允許把一個衍生類別的對象作為一個基類對象對待。例如,有這樣一個設計:一個Dog類型的對象派生自Animal類,這是類比"是一個(is-a)"關係(例圖,Dog是一個Animal)。
- 執行個體化:建立一個類的執行個體,類的具體對象。
- 方法:類中定義的函數。
- 對象:通過類定義的資料結構執行個體。對象包括兩個資料成員(類變數和執行個體變數)和方法。
2
很多類都傾向於將對象建立為有初始狀態的。因此類可能會定義一個名為 __init__() 的特殊方法(構造方法),類定義了 __init__() 方法的話,類的執行個體化操作會自動調用 __init__() 方法。當然, __init__() 方法可以有參數,參數通過 __init__() 傳遞到類的執行個體化操作上。例如:
class Student(object): # 自訂一個Student類,包括學號、姓名、分數、性別等資訊 def __init__(self,number, name, score, sex): # 初始化Student,參數 number,name,score,sex self.number = number self.name = name self.score = score self.sex = sexstu1=Student(3054,"shen",90,"male")print(stu1.name,stu1.score) # 輸出結果:shen 90
self 代表類的執行個體,而非類:
類的方法與普通的函數只有一個特別的區別——它們必須有一個額外的第一個參數名稱, 按照慣例它的名稱是 self。
3 類的方法
在類的內部,使用 def 關鍵字來定義一個方法,與一般函數定義不同,類方法必須包含參數 self, 且為第一個參數,self 代表的是類的執行個體。
#類定義class people: #定義基本屬性 name = ‘‘ age = 0 #定義私人屬性,私人屬性在類外部無法直接進行訪問 __weight = 0 #定義構造方法 def __init__(self,n,a,w): self.name = n self.age = a self.__weight = w def speak(self): print("%s 說: 我 %d 歲。" %(self.name,self.age)) # 執行個體化類p = people(‘runoob‘,10,30)p.speak()
4 類的屬性與方法
1)類的私人屬性
__private_attrs:兩個底線開頭,聲明該屬性為私人,不能在類的外部被使用或直接存取。
在類內部的方法中使用時 self.__private_attrs。
2)類的方法
在類地內部,使用 def 關鍵字來定義一個方法,與一般函數定義不同,類方法必須包含參數 self,且為第一個參數,self 代表的是類的執行個體。
self 的名字並不是規定死的,也可以使用 this,但是最好還是按照約定是用 self。
3)類的私人方法
__private_method:兩個底線開頭,聲明該方法為私人方法,不能在類的外部調用。
在類的內部調用 : self.__private_methods。
4)類的專有方法
- __init__ : 建構函式,在產生對象時調用
- __del__ : 解構函式,釋放對象時使用
- __repr__ : 列印,轉換
- __setitem__ : 按照索引賦值
- __getitem__: 按照索引擷取值
- __len__: 獲得長度
- __cmp__: 比較運算
- __call__: 函數調用
- __add__: 加運算
- __sub__: 減運算
- __mul__: 乘運算
- __div__: 除運算
- __mod__: 求餘運算
- __pow__: 乘方
5 Python 的類也可以繼承、多繼承以及重寫方法……
Python 物件導向