Python中的類,自我監(jiān)督(day7)
今天學(xué)習(xí)的是Python的類。
學(xué)習(xí)大綱如下:

什么是類?
類是編程中面向?qū)ο蟮囊粋€核心概念。它定義了一類具有相同特性的屬性或事件,用于創(chuàng)建具有相似行為和特征的對象。
下面來做個比方。我是一名建筑設(shè)計師,我按照建筑相關(guān)標(biāo)準(zhǔn)和要求(Python中類的創(chuàng)建格式、屬性定義、方法定義的固定語句就類似這些標(biāo)準(zhǔn)),設(shè)計了一棟居民樓的建筑圖紙(這個就是類,類似于模板、藍(lán)圖),我的圖紙中說明了要用哪些材料(定義了類屬性)用多少號的鋼筋,多少號的水泥,樓層間距有多高,地基挖多深等等方法(定義了類方法)然后很多建筑公司都用我的圖紙蓋了居民樓(根據(jù)我圖紙蓋出來的居民樓,就是類對象)。
類的創(chuàng)建
固定格式:
class MyClass():
?????pass
注意:給類取名字的時候首字母要大寫,這是通用范式,不大寫也不會報錯。
實例化對象:通過類可以創(chuàng)建對象,這個過程被稱為實例化。使用類名后面跟一對括號來實例化一個對象。
obj = MyClass()? # 創(chuàng)建一個MyClass的實例對象屬性:類的屬性是與類或?qū)ο笙嚓P(guān)聯(lián)的數(shù)據(jù)。它們存儲在類的命名空間中,并且可以在類的方法中訪問。
class MyClass:
? ? def __init__(self, arg1, arg2):
? ? ? ? self.arg1 = arg1
? ? ? ? self.arg2 = arg2注:__init__ 這里是左右各兩個英文下劃線。
方法:類的方法是與類或?qū)ο笙嚓P(guān)聯(lián)的函數(shù)。它們定義了類的行為和功能。方法通過在類中定義函數(shù)來創(chuàng)建。
class MyClass:
? ? def __init__(self, arg1, arg2):
? ? ? ? self.arg1 = arg1
? ? ? ? self.arg2 = arg2????def method(self):
?????? ?print('hello world')
self關(guān)鍵字:在類的方法中,self是一個特殊的參數(shù),表示對象本身。通過self可以訪問對象的屬性和調(diào)用其他方法。
繼承:繼承是面向?qū)ο缶幊痰闹匾拍?,允許創(chuàng)建一個新類,并從現(xiàn)有的類繼承屬性和方法。通過繼承,子類可以重用父類的代碼,并添加自己的特定功能。
class ChildClass(ParentClass):
? ? pass
????8.多態(tài):多態(tài)性是面向?qū)ο缶幊痰牧硪粋€重要概念。它允許不同的類具有相同的方法名稱,但其行為和實現(xiàn)方式可以不同。
class Dog:
? ? def sound(self):
? ? ? ? print("Woof!")
class Cat:
? ? def sound(self):
? ? ? ? print("Meow!")
animals = [Dog(), Cat()]
for animal in animals:
? ? animal.sound()? # 輸出:Woof! Meow!
9.封裝:封裝是將相關(guān)數(shù)據(jù)和方法組合在一起的機制。類可以將屬性和方法封裝在一起,并通過訪問控制機制來限制對它們的訪問。使用訪問修飾符(如public、private和protected)可以控制屬性和方法的可見性。
class MyClass:
? ? def __init__(self):
? ? ? ? self.public_attribute = "Public"? # 公共屬性
? ? ? ? self._protected_attribute = "Protected"? # 受保護(hù)屬性
? ? ? ? self.__private_attribute = "Private"? # 私有屬性
obj = MyClass()
print(obj.public_attribute)? # 訪問公共屬性
print(obj._protected_attribute)? # 訪問受保護(hù)屬性(約定上的規(guī)范,實際上仍可訪問)
print(obj.__private_attribute)? # 報錯,無法訪問私有屬性
10.方法重寫:在子類中可以重寫繼承自父類的方法,以實現(xiàn)自己特定的行為。通過在子類中定義與父類同名的方法,子類可以覆蓋父類的方法實現(xiàn)。
class ParentClass:
? ? def method(self):
? ? ? ? print("Parent method")
class ChildClass(ParentClass):
? ? def method(self):
? ? ? ? print("Child method")
obj = ChildClass()
obj.method()? # 輸出:Child method