Python 是一種面向?qū)ο蟮?a target="_blank">編程語(yǔ)言,它支持類(lèi)和對(duì)象。類(lèi)是一種用戶(hù)自定義的數(shù)據(jù)類(lèi)型,用于定義對(duì)象的屬性和方法。對(duì)象是類(lèi)的實(shí)例,它包含類(lèi)的屬性和方法的實(shí)際值。
定義類(lèi)
定義類(lèi)的語(yǔ)法如下:
classClassName: def__init__(self,arg1,arg2,...): self.attribute1=arg1 self.attribute2=arg2 ... defmethod1(self,arg1,arg2,...): #methodbody defmethod2(self,arg1,arg2,...): #methodbody
在上面的代碼中,__init__() 方法是類(lèi)的構(gòu)造函數(shù),它在創(chuàng)建對(duì)象時(shí)調(diào)用。self 參數(shù)是一個(gè)指向當(dāng)前對(duì)象的引用,它用于訪問(wèn)對(duì)象的屬性和方法。
創(chuàng)建對(duì)象
要?jiǎng)?chuàng)建一個(gè)對(duì)象,我們必須使用類(lèi)的名稱(chēng)和構(gòu)造函數(shù)的參數(shù)。例如:
classPerson: def__init__(self,name,age): self.name=name self.age=age person1=Person("John",25)
在上面的代碼中,我們定義了一個(gè)名為 Person 的類(lèi),并創(chuàng)建了一個(gè)名為 person1 的對(duì)象。這個(gè)對(duì)象有兩個(gè)屬性:name 和 age。
訪問(wèn)屬性和方法
要訪問(wèn)對(duì)象的屬性和方法,我們可以使用點(diǎn)操作符(.)。
print(person1.name) print(person1.age)
在上面的代碼中,我們?cè)L問(wèn)了 person1 對(duì)象的 name 和 age 屬性。
要調(diào)用對(duì)象的方法,我們可以使用點(diǎn)操作符和方法名。
classPerson: def__init__(self,name,age): self.name=name self.age=age defsay_hello(self): print("Hello,mynameis",self.name) person1=Person("John",25) person1.say_hello()
在上面的代碼中,我們定義了一個(gè)名為 say_hello() 的方法,并在 person1 對(duì)象上調(diào)用它。
繼承
Python 支持繼承,它允許我們定義一個(gè)類(lèi)來(lái)繼承另一個(gè)類(lèi)的屬性和方法。
classAnimal: def__init__(self,name): self.name=name defspeak(self): pass classDog(Animal): defspeak(self): print("Woof!") classCat(Animal): defspeak(self): print("Meow!") dog1=Dog("Rex") cat1=Cat("Whiskers") dog1.speak() cat1.speak()
在上面的代碼中,我們定義了一個(gè)名為 Animal 的類(lèi),并創(chuàng)建了兩個(gè)名為 Dog 和 Cat 的子類(lèi)。這些子類(lèi)繼承了 Animal 類(lèi)的屬性和方法,并覆蓋了 speak() 方法。
多態(tài)性
多態(tài)性是面向?qū)ο缶幊讨械囊粋€(gè)概念,它允許我們使用相同的方法名調(diào)用不同類(lèi)的方法。這樣,我們可以編寫(xiě)通用的代碼來(lái)處理不同的對(duì)象類(lèi)型。
在 Python 中,多態(tài)性是通過(guò)繼承和方法覆蓋來(lái)實(shí)現(xiàn)的。當(dāng)我們調(diào)用一個(gè)方法時(shí),Python 解釋器會(huì)在對(duì)象的類(lèi)和其父類(lèi)中查找該方法,直到找到為止。
classAnimal: def__init__(self,name): self.name=name defspeak(self): pass classDog(Animal): defspeak(self): print("Woof!") classCat(Animal): defspeak(self): print("Meow!") defmake_animal_speak(animal): animal.speak() dog1=Dog("Rex") cat1=Cat("Whiskers") make_animal_speak(dog1) make_animal_speak(cat1)
在上面的代碼中,我們定義了一個(gè)名為 make_animal_speak() 的函數(shù),它接受一個(gè) Animal 類(lèi)型的參數(shù),并調(diào)用該參數(shù)的 speak() 方法。然后,我們創(chuàng)建了一個(gè) Dog 類(lèi)型的對(duì)象和一個(gè) Cat 類(lèi)型的對(duì)象,并將它們作為參數(shù)傳遞給 make_animal_speak() 函數(shù)。
封裝
封裝是面向?qū)ο缶幊讨械牧硪粋€(gè)概念,它允許我們將對(duì)象的內(nèi)部狀態(tài)隱藏起來(lái),只公開(kāi)必要的接口來(lái)訪問(wèn)它。在 Python 中,封裝是通過(guò)屬性和方法的訪問(wèn)控制來(lái)實(shí)現(xiàn)的。
在 Python 中,屬性和方法的訪問(wèn)控制是通過(guò)屬性和方法的名稱(chēng)前綴來(lái)實(shí)現(xiàn)的。如果屬性或方法的名稱(chēng)以?xún)蓚€(gè)下劃線開(kāi)頭(__),則它是私有的,否則它是公共的。
classPerson: def__init__(self,name,age): self.__name=name self.__age=age defget_name(self): returnself.__name defset_name(self,name): self.__name=name defget_age(self): returnself.__age defset_age(self,age): self.__age=age person1=Person("John",25) print(person1.get_name()) person1.set_name("Mike") print(person1.get_name())
在上面的代碼中,我們定義了一個(gè)名為 Person 的類(lèi),并將 name 和 age 屬性設(shè)置為私有的。然后,我們定義了四個(gè)公共方法來(lái)訪問(wèn)和修改這些屬性。
總結(jié)
Python 類(lèi)和對(duì)象是面向?qū)ο缶幊痰幕靖拍?。通過(guò)定義類(lèi)和創(chuàng)建對(duì)象,我們可以組織代碼并實(shí)現(xiàn)封裝、繼承和多態(tài)性。了解這些概念對(duì)于編寫(xiě)高質(zhì)量的 Python 代碼非常重要。
審核編輯:湯梓紅
-
編程語(yǔ)言
+關(guān)注
關(guān)注
10文章
1942瀏覽量
34707 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4327瀏覽量
62571 -
對(duì)象
+關(guān)注
關(guān)注
1文章
38瀏覽量
17388 -
python
+關(guān)注
關(guān)注
56文章
4792瀏覽量
84627 -
解釋器
+關(guān)注
關(guān)注
0文章
103瀏覽量
6509
原文標(biāo)題:網(wǎng)絡(luò)工程師學(xué)Python-12-類(lèi)和對(duì)象
文章出處:【微信號(hào):網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號(hào):網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論