1 類的定義
類的理解:它是現實世界或思維世界中的實體在計算機中的反映,它將數據(類的數據成員)以及這些數據上的操作(方法,其他語言稱爲函數)封裝在一起。
類就像一個模板,通過這個模板可以產生很多個對象
類的最基本的作用就是封裝代碼
class Student(): # 類的定義
name = "Lilly"
age = 18
def print_file(self):
print('name: '+self.name)
print('age: '+str(self.age))
student1 = Student() # 實例化
student1.print_file() # 調用類裏面的方法
2 構造函數
class Student(): # 類的定義
name = ""
age = 0 # 此處name和age是類變量
def __init__(self,name,age): # 構造函數
print('*******')
self.name = name
self.age = age # 此處的self.name和self.age是實例變量,只和對象相關
def print_file(self):
print('name: '+self.name)
print('age: '+str(self.age))
student1 = Student('Tom',19) # 實例化
student2 = Student('Sam',18)
student1.print_file() # 調用類裏面的方法
student2.print_file()
類變量和實例變量
類變量就是和類相關聯的變量;
實例變量是和對象相關聯的變量,在構造函數裏通過self.變量名
來保存實例變量
類與對象的變量查找順序
訪問
一個實例變量,如果對象實例列表沒有,會繼續在類變量裏去尋找。
3 self與實例方法
self代表的是對象實例;對於類下面的實例方法,在定義的時候self必須出現。但在調用實例方法的時候是不需要傳入self的。
在實例方法中訪問實例變量與類變量
方法需要對變量做一系列運算,然後去改變類的特徵。
1. 實例方法與構造函數的調用方法不一樣,構造函數的調用,是通過類名(變量)來調用,比如:student1=Student(‘qxn’,24)來調用,而實例方法是通過對象來調用的,比如:student.do_homework()來進行的。
2. 實例方法與構造函數的意義不同,實例方法主要是來描述類的行爲,而構造函數主要是來初始化類的各種特徵。
在實例方法中訪問類變量
:
1. 通過類名.變量名來進行訪問
2. 通過self.class.name來進行訪問
4 類方法
@classmethod # 在方法上面加@classmethod裝飾器表示類方法
def plus_sum(cls):
cls.sum += 1
print(cls.sum)
調用類方法:
直接用類來調用:
Student.plus_sum()
5 靜態方法
- 靜態方法裝飾器@staticmethod
- 無需傳入cls,self等參數,可以被類和方法調用
- 靜態方法和類方法不能訪問實例變量
- 靜態方法可以被類方法代替,它與面向對象的關係很弱,和普通函數區別不大。不建議使用
6 成員可見性:公開和私有
變成私有的方法:變量或者方法前加雙下劃線
python可以通過在實例對象後加.__value的形式創建成員變量。————python的動態屬性
7 子類方法調用父類方法:super關鍵字
調用形式:super(子類名,self).父類方法