重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
小編給大家分享一下關(guān)于Python類(lèi)型和對(duì)象的簡(jiǎn)介,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來(lái),是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元安新做網(wǎng)站,已為上家服務(wù),為安新各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
類(lèi)型與對(duì)象
一點(diǎn)基礎(chǔ)理論:
對(duì)象代表現(xiàn)實(shí)世界中像轎車(chē)、狗、自行車(chē)這些事物。對(duì)象具有數(shù)據(jù)和行為兩個(gè)主要特征。
在面向?qū)ο缶幊讨校覀儼褦?shù)據(jù)當(dāng)作屬性,把行為當(dāng)作方法。即:
數(shù)據(jù) → 屬性 和 行為 → 方法
類(lèi)型是創(chuàng)造單個(gè)對(duì)象實(shí)例的藍(lán)本。在現(xiàn)實(shí)世界中,我們經(jīng)常發(fā)現(xiàn)很多對(duì)象實(shí)例擁有相同的類(lèi)型,比如轎車(chē)。他們都具有相同的構(gòu)造和模型(具有發(fā)動(dòng)機(jī),輪子,門(mén)等等)。每輛車(chē)都是根據(jù)同一張?jiān)O(shè)計(jì)圖制作的,并且具有相同的組成部分。
Python,作為一門(mén)面向?qū)ο缶幊痰恼Z(yǔ)言,具有類(lèi)和對(duì)象的概念。
類(lèi)是藍(lán)圖,對(duì)象是模型。
同樣,一個(gè)類(lèi),它只是一個(gè)模型,或者一種定義屬性和行為的方法(正如我們?cè)诶碚摬糠炙懻摰模@纾?chē)輛類(lèi)有自己的屬性,定義什么是車(chē)輛。車(chē)輪的數(shù)量、能源的類(lèi)型、座位容量和最大速度都是車(chē)輛的屬性。
考慮到這一點(diǎn),讓我們看看類(lèi)的 Python 語(yǔ)法:
class Vehicle: pass
我們用一個(gè)類(lèi)聲明來(lái)定義類(lèi)?,僅此而已。很簡(jiǎn)單,不是嗎?
對(duì)象是一個(gè)類(lèi)的實(shí)例,我們用命名類(lèi)來(lái)創(chuàng)建一個(gè)實(shí)例。
car = Vehicle() print(car) # <__main__.Vehicle instance at 0x7fb1de6c2638>
這里 ‘car’ 是 ‘Vehicle’ 類(lèi)的一個(gè)對(duì)象(或者說(shuō)實(shí)例)。
記住,我們的 ‘Vehicle’ 類(lèi)有四個(gè)屬性:輪子數(shù)量,能源類(lèi)型,座位容量,和最大速度。我們創(chuàng)建一個(gè) ‘Vehicle’ 對(duì)象時(shí)設(shè)置所有這些屬性 。所以在這里,我們定義我們的類(lèi)初始化時(shí)要接收數(shù)據(jù)時(shí):
class Vehicle: def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity): self.number_of_wheels = number_of_wheels self.type_of_tank = type_of_tank self.seating_capacity = seating_capacity self.maximum_velocity = maximum_velocity
我們使用了 ‘init’方法。我們稱(chēng)它為構(gòu)造方法。所以創(chuàng)建 ‘vehicle’ 對(duì)象時(shí)可以定義這些屬性。假設(shè)我們喜歡 Tesla Model S,我們要?jiǎng)?chuàng)建這種對(duì)象。它有 4 個(gè)輪子,使用電能,有 5 個(gè)座位,最大時(shí)速 250km/h (155mph)
tesla_model_s = Vehicle(4, 'electric', 5, 250)
4 個(gè) “輪子”+ 電能 “能源”+5 個(gè) “座位”+250km/h “最大速度”。
所有屬性都設(shè)置完成了。但是我們?nèi)绾潍@取這些屬性值?我們發(fā)送一個(gè)消息到對(duì)象來(lái)問(wèn)他們。 我們稱(chēng)之為方法。方法是對(duì)象的行為。讓我們來(lái)實(shí)現(xiàn)它:
class Vehicle: def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity): self.number_of_wheels = number_of_wheels self.type_of_tank = type_of_tank self.seating_capacity = seating_capacity self.maximum_velocity = maximum_velocity def number_of_wheels(self): return self.number_of_wheels def set_number_of_wheels(self, number): self.number_of_wheels = number
這里創(chuàng)建了兩個(gè)方法: number_of_wheels 和 set_number_of_wheels. 我們稱(chēng)它為 獲取 & 設(shè)置. 因?yàn)榈谝粋€(gè)獲取了屬性值,然后第二個(gè)設(shè)置了一個(gè)新的屬性值。
Python 中,我們可以用 “@property” (“decorator”) 去定義 "getters" 和 “setters”。請(qǐng)看以下代碼:
class Vehicle: def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity): self.number_of_wheels = number_of_wheels self.type_of_tank = type_of_tank self.seating_capacity = seating_capacity self.maximum_velocity = maximum_velocity @property def number_of_wheels(self): return self.number_of_wheels @number_of_wheels.setter def number_of_wheels(self, number): self.number_of_wheels = number
同時(shí),我們可以使用這些方法作為屬性:
tesla_model_s = Vehicle(4, 'electric', 5, 250) print(tesla_model_s.number_of_wheels) # 4 tesla_model_s.number_of_wheels = 2 # setting number of wheels to 2 print(tesla_model_s.number_of_wheels) # 2
這個(gè)與定義方法有些許不同。這些方法的工作機(jī)制與屬性不同。例如,當(dāng)我們?cè)O(shè)置輪子數(shù)量時(shí),我們需要把 2 賦值給一個(gè)變量,只需要設(shè)置 “number_of_wheels” 的值為 2。這是一種寫(xiě) “pythonic”、 ”getter“、“setter” 代碼的方法。
而且同時(shí)我們也可以使用其他方法,比如 “make_noise” 方法。請(qǐng)看下面的例子。
class Vehicle: def __init__(self, number_of_wheels, type_of_tank, seating_capacity, maximum_velocity): self.number_of_wheels = number_of_wheels self.type_of_tank = type_of_tank self.seating_capacity = seating_capacity self.maximum_velocity = maximum_velocity def make_noise(self): print('VRUUUUUUUM')
看完了這篇文章,相信你對(duì)關(guān)于Python類(lèi)型和對(duì)象的簡(jiǎn)介有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!