Python(三)類與對象


類是一個函數包

類中可以放置函數和變量,然后類中的函數可以很方便的使用類中的變量。

類中可以放置函數和變量

def語句定義一個函數,class語句定義一個類。

在類中被定義的函數被稱為類的【方法】,描述的是這個類能做什么。使用類名.函數名()的格式,就可以讓類的方法運行起來。

在類中被定義的變量被稱為類的【屬性】。使用類名.變量名的格式,可以把類中的屬性的值提取出來。

使用類名.變量名的格式,可以讓我們在類的外面,增加或修改類的屬性。

為了讓代碼更直觀,一般會把類中的函數和函數之間換行隔開。

@classmethod是聲明了下面的函數是類方法。

 

 

 類方法和類屬性可以組合

為了把類中的變量傳遞給類中的函數,我們需要用到3個特定格式:

① 第一個格式@classmethod的中文意思就是“類方法”,@classmethod聲明了函數1是類方法,這樣才能允許函數1使用類屬性中的數據。

② 第二個格式cls的意思是class的縮寫。如果類方法函數1想使用類屬性(也就是類中的變量),就要寫上cls為函數1的第一個參數,也就是把這個類作為參數傳給自己,這樣就能被允許使用類中的數據。

③ 第三個格式是cls.變量。類方法想使用類屬性的時候,需要在這些變量名稱前加上cls.。

注意:當類中的函數【不需要】用到類中的變量時,就不要用@classmethod、cls、cls.三處格式,否則終端會報錯。

給類方法傳參

 類方法僅使用外部參數

 只使用外部的參數,沒有使用類屬性,格式上不需要@lassmethod和cls。

類方法僅使用內部參數 

就是要用上面說的類方法可以與類屬性組合的三個格式

類方法同時使用內部參數和外部參數

# 請直接運行並體驗代碼效果
class 加100類():
    變量 = 100
    
    @classmethod
    def 加100函數(cls,參數):
        總和 = cls.變量 + 參數
        print('加100函數計算結果如下:')
        print(總和)

參數 = int(input('請輸入一個整數:'))
加100類.加100函數(參數)

效果圖

注意:我們要多預設幾個參數位置,以備類方法突然要使用多個外部參數。

 增加/修改類屬性

有兩種途徑來增加或修改類屬性。一種是從內部,用類方法去增加/修改;另一種是從外部,用類.變量 = xx直接增加/修改類屬性。

外部增加/修改類屬性

class 類A():
    pass

類A.變量1 = 100
print(類A.變量1)

內部增加/修改類屬性

lass 類():
    @classmethod
    def 增加類屬性(cls):
        cls.變量 = input('請隨意輸入字符串:')

類.增加類屬性()

print('打印新增的類屬性:')
print(類.變量)

類與對象

以【類】為模板做出來的這些產品就是【類】的【實例化對象】,這個過程叫做【實例化】

類的實例化

實例化前的格式

 實例化后的格式

 

 

 實例屬性和類屬性

增加/修改類屬性實例屬性也會發生變化,但是增加/修改實例屬性,類屬性不會發生變化, 且影響的實例屬性只有那一個。

注意:當修改了實例屬性之后,修改對應的類屬性也不會影響該實例屬性了。

實例方法和類方法

重寫類方法

步驟一:在類的外部寫一個函數。

步驟二:把這個新函數的名字賦值給類.原始函數

 

 

 注意:不可以重寫實例方法。

初始化函數

class 類():
    def __init__(self):
        print('實例化成功!')
        
實例 = 類()

效果圖

初始化函數的意思是,當你創建一個實例的時候,這個函數就會被調用。上面的代碼在執行實例 = 類()的語句時,就自動調用了__init__(self)函數。

__init__()的括號中,第一個參數一定要寫上self,不然會報錯。

初始化函數也可以傳遞參數。

類的繼承

數據流轉圖

 

 

 注意:子類的方法可以替換父類的方法(也就是重新定義)

多重繼承:一個子類從【多個父類】中繼承類方法。格式是class 子類(父類1,父類2,……)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM