如何理解python面向?qū)ο缶幊?/h1>
瀏覽:68日期:2022-07-23 15:20:23
類是面向?qū)ο蟪绦蛟O(shè)計(jì)的一部分。面向?qū)ο蟪绦蛟O(shè)計(jì)或者簡(jiǎn)稱為 OOP 致力于創(chuàng)建可重用代碼塊稱之為類。當(dāng)你想在你的程序中使用類時(shí),你會(huì)從類中創(chuàng)建一個(gè)對(duì)象,這也是面向?qū)ο笠辉~的由來。Python 并不總是面向?qū)ο蟮模悄銜?huì)在你的項(xiàng)目中用到對(duì)象。為了理解類,你需要理解面向?qū)ο蟮囊恍┗A(chǔ)術(shù)語。
常用術(shù)語
class:類。類是代碼塊的主體,其中定義了建立的模型的屬性和行為。這個(gè)模型可以來自于真實(shí)世界,也可以是虛擬游戲等。
attribute:屬性。是一系列信息的集合。在類中,一個(gè)屬性通常是一個(gè)變量。
behavior:行為。行為是定義在類中,組成方法的部分。也即是定義在類中函數(shù)的一部分。
method:方法。類中的函數(shù),由 behavior 組成。
object:對(duì)象。對(duì)象是類的實(shí)例。一個(gè)對(duì)象中包含所有類中屬性的值。你可以為一個(gè)類創(chuàng)建任意數(shù)量的對(duì)象。
近距離觀察 Rocket 類
我們已經(jīng)了解到一些類的基本術(shù)語,讓我們回頭再分析一下上節(jié)提到的 Rocket 類。
__init__() 方法
定義一個(gè)初始代碼塊,如下所示:
class Rocket(): # Rocket simulates a rocket ship for a game, # or a physics simulation. def __init__(self): # Each rocket has an (x,y) position. self.x = 0 self.y = 0
第一行展示了類是如何創(chuàng)建的。關(guān)鍵字 class 告訴 Python 準(zhǔn)備定義一個(gè)類。類名的命名規(guī)則和變量的相同,但是 Python 中有一個(gè)約定好的規(guī)則,類名必須是駝峰式的。也即每個(gè)單詞的開頭必須是大寫的,不允許下劃線的出現(xiàn)。類名后緊跟一對(duì)圓括號(hào),目前為止圓括號(hào)里都是空的,接下來的學(xué)習(xí)中,其中可能會(huì)包含一個(gè)類。這個(gè)類是新類基于的類。
前后都有兩個(gè)下劃線的函數(shù)是內(nèi)置在 Python 中的有特殊用途的函數(shù)。__init__() 函數(shù)就是一個(gè)特殊的函數(shù)。當(dāng)創(chuàng)建一個(gè)類的對(duì)象時(shí),它會(huì)自動(dòng)執(zhí)行。我們可以稱之為初始化函數(shù),在對(duì)象使用之前初始化一些必要的屬性。在這個(gè)例子中,__init__() 函數(shù)初始化了 x 和 y 屬性。
關(guān)鍵字 self 可能會(huì)有些難以理解。單詞 'self' 指向當(dāng)前的對(duì)象。當(dāng)你創(chuàng)建一個(gè)類時(shí),它可以訪問到類中的任意指定屬性。基本上,類中所有的函數(shù)都需要 self 對(duì)象作為第一個(gè)參數(shù),因此它們就可以訪問類中的屬性。
現(xiàn)在,讓我們看看類中的方法吧!
一個(gè)簡(jiǎn)單的方法
下述代碼在 Rocket 類中定義了一個(gè)方法。
class Rocket(): # Rocket simulates a rocket ship for a game, # or a physics simulation. def __init__(self): # Each rocket has an (x,y) position. self.x = 0 self.y = 0 def move_up(self): # Increment the y-position of the rocket. self.y += 1
方法就是類中的函數(shù)。因此你可以在方法中做任何函數(shù)能做的事。
默認(rèn)情況下,每個(gè)函數(shù)都需要接受一個(gè)參數(shù):self 。它是對(duì)調(diào)用這個(gè)方法的對(duì)象的引用。self 參數(shù)能讓你訪問到調(diào)用對(duì)象的屬性。在這個(gè)例子中,self 用來訪問 Rocket 對(duì)象的 y 屬性。這個(gè)方法被調(diào)用一次,對(duì)象的 y 屬性就增加1。為了更近一步了解方法的運(yùn)行過程,仔細(xì)閱讀下述代碼,并觀察它們的輸出。
class Rocket(): # Rocket simulates a rocket ship for a game, # or a physics simulation. def __init__(self): # Each rocket has an (x,y) position. self.x = 0 self.y = 0 def move_up(self): # Increment the y-position of the rocket. self.y += 1# Create a Rocket object, and have it start to move up.my_rocket = Rocket()print('Rocket altitude:', my_rocket.y)my_rocket.move_up()print('Rocket altitude:', my_rocket.y)
創(chuàng)建多個(gè)對(duì)象
面向?qū)ο缶幊桃粋€(gè)重要目標(biāo)是創(chuàng)建可重用代碼。一旦你寫好了類,就能創(chuàng)建任意數(shù)量的對(duì)象。通常,類被放進(jìn)一個(gè)單獨(dú)的文件中,在需要的時(shí)候?qū)氤绦蛑小R虼四憧梢詣?chuàng)建一個(gè)類庫(kù),在不同的程序中重復(fù)使用這些類。
在一個(gè)類上創(chuàng)建多個(gè)對(duì)象,示例如下:
class Rocket(): # Rocket simulates a rocket ship for a game,# Rocket # or a physics simulation. def __init__(self): # Each rocket has an (x,y) position. self.x = 0 self.y = 0 def move_up(self): # Increment the y-position of the rocket. self.y += 1 # Create a fleet of 5 rockets, and store them in a list.my_rockets = []for x in range(0,5): new_rocket = Rocket() my_rockets.append(new_rocket)# Show that each rocket is a separate object.for rocket in my_rockets: print(rocket)
內(nèi)容擴(kuò)展:
初識(shí)類和對(duì)象
python中一切皆為對(duì)象,類型的本質(zhì)就是類,所以,不管你信不信,你已經(jīng)使用了很長(zhǎng)時(shí)間的類了
>>> dict #類型dict就是類dict<class ’dict’>>>> d=dict(name=’eva’) #實(shí)例化>>> d.pop(’name’) #向d發(fā)一條消息,執(zhí)行d的方法pop’eva’
從上面的例子來看,字典就是一類數(shù)據(jù)結(jié)構(gòu),我一說字典你就知道是那個(gè)用{}表示,里面由k-v鍵值對(duì)的東西,它還具有一些增刪改查的方法。但是我一說字典你能知道字典里具體存了哪些內(nèi)容么?不能,所以我們說對(duì)于一個(gè)類來說,它具有相同的特征屬性和方法。
而具體的{’name’:’eva’}這個(gè)字典,它是一個(gè)字典,可以使用字典的所有方法,并且里面有了具體的值,它就是字典的一個(gè)對(duì)象。對(duì)象就是已經(jīng)實(shí)實(shí)在在存在的某一個(gè)具體的個(gè)體。
再舉一個(gè)其他的例子,通俗一點(diǎn),比如你現(xiàn)在有一個(gè)動(dòng)物園,你想描述這個(gè)動(dòng)物園,那么動(dòng)物園里的每一種動(dòng)物就是一個(gè)類,老虎、天鵝、鱷魚、熊。他們都有相同的屬性,比如身高體重出生時(shí)間和品種,還有各種動(dòng)作,比如鱷魚會(huì)游泳,天鵝會(huì)飛,老虎會(huì)跑,熊會(huì)吃。
但是這些老虎熊啥的都不是具體的某一只,而是一類動(dòng)物。雖然他們都有身高體重,但是你卻沒有辦法確定這個(gè)值是多少。如果這個(gè)時(shí)候給你一只具體的老虎,而你還沒死,那你就能給他量量身高稱稱體重,這些數(shù)值是不是就變成具體的了?那么具體的這一只老虎就是一個(gè)具體的實(shí)例,也是一個(gè)對(duì)象。不止這一只,其實(shí)每一只具體的老虎都有自己的身高體重,那么每一只老虎都是老虎類的一個(gè)對(duì)象。
到此這篇關(guān)于如何理解python面向?qū)ο缶幊痰奈恼戮徒榻B到這了,更多相關(guān)python面向?qū)ο缶幊淘斀鈨?nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. ASP中if語句、select 、while循環(huán)的使用方法2. xml中的空格之完全解說3. ASP中解決“對(duì)象關(guān)閉時(shí),不允許操作。”的詭異問題……4. ASP動(dòng)態(tài)網(wǎng)頁(yè)制作技術(shù)經(jīng)驗(yàn)分享5. msxml3.dll 錯(cuò)誤 800c0019 系統(tǒng)錯(cuò)誤:-2146697191解決方法6. 無線標(biāo)記語言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)第1/2頁(yè)7. XML入門的常見問題(四)8. html小技巧之td,div標(biāo)簽里內(nèi)容不換行9. 解決ASP中http狀態(tài)跳轉(zhuǎn)返回錯(cuò)誤頁(yè)的問題10. WMLScript的語法基礎(chǔ)
類是面向?qū)ο蟪绦蛟O(shè)計(jì)的一部分。面向?qū)ο蟪绦蛟O(shè)計(jì)或者簡(jiǎn)稱為 OOP 致力于創(chuàng)建可重用代碼塊稱之為類。當(dāng)你想在你的程序中使用類時(shí),你會(huì)從類中創(chuàng)建一個(gè)對(duì)象,這也是面向?qū)ο笠辉~的由來。Python 并不總是面向?qū)ο蟮模悄銜?huì)在你的項(xiàng)目中用到對(duì)象。為了理解類,你需要理解面向?qū)ο蟮囊恍┗A(chǔ)術(shù)語。
常用術(shù)語
class:類。類是代碼塊的主體,其中定義了建立的模型的屬性和行為。這個(gè)模型可以來自于真實(shí)世界,也可以是虛擬游戲等。
attribute:屬性。是一系列信息的集合。在類中,一個(gè)屬性通常是一個(gè)變量。
behavior:行為。行為是定義在類中,組成方法的部分。也即是定義在類中函數(shù)的一部分。
method:方法。類中的函數(shù),由 behavior 組成。
object:對(duì)象。對(duì)象是類的實(shí)例。一個(gè)對(duì)象中包含所有類中屬性的值。你可以為一個(gè)類創(chuàng)建任意數(shù)量的對(duì)象。
近距離觀察 Rocket 類
我們已經(jīng)了解到一些類的基本術(shù)語,讓我們回頭再分析一下上節(jié)提到的 Rocket 類。
__init__() 方法
定義一個(gè)初始代碼塊,如下所示:
class Rocket(): # Rocket simulates a rocket ship for a game, # or a physics simulation. def __init__(self): # Each rocket has an (x,y) position. self.x = 0 self.y = 0
第一行展示了類是如何創(chuàng)建的。關(guān)鍵字 class 告訴 Python 準(zhǔn)備定義一個(gè)類。類名的命名規(guī)則和變量的相同,但是 Python 中有一個(gè)約定好的規(guī)則,類名必須是駝峰式的。也即每個(gè)單詞的開頭必須是大寫的,不允許下劃線的出現(xiàn)。類名后緊跟一對(duì)圓括號(hào),目前為止圓括號(hào)里都是空的,接下來的學(xué)習(xí)中,其中可能會(huì)包含一個(gè)類。這個(gè)類是新類基于的類。
前后都有兩個(gè)下劃線的函數(shù)是內(nèi)置在 Python 中的有特殊用途的函數(shù)。__init__() 函數(shù)就是一個(gè)特殊的函數(shù)。當(dāng)創(chuàng)建一個(gè)類的對(duì)象時(shí),它會(huì)自動(dòng)執(zhí)行。我們可以稱之為初始化函數(shù),在對(duì)象使用之前初始化一些必要的屬性。在這個(gè)例子中,__init__() 函數(shù)初始化了 x 和 y 屬性。
關(guān)鍵字 self 可能會(huì)有些難以理解。單詞 'self' 指向當(dāng)前的對(duì)象。當(dāng)你創(chuàng)建一個(gè)類時(shí),它可以訪問到類中的任意指定屬性。基本上,類中所有的函數(shù)都需要 self 對(duì)象作為第一個(gè)參數(shù),因此它們就可以訪問類中的屬性。
現(xiàn)在,讓我們看看類中的方法吧!
一個(gè)簡(jiǎn)單的方法
下述代碼在 Rocket 類中定義了一個(gè)方法。
class Rocket(): # Rocket simulates a rocket ship for a game, # or a physics simulation. def __init__(self): # Each rocket has an (x,y) position. self.x = 0 self.y = 0 def move_up(self): # Increment the y-position of the rocket. self.y += 1
方法就是類中的函數(shù)。因此你可以在方法中做任何函數(shù)能做的事。
默認(rèn)情況下,每個(gè)函數(shù)都需要接受一個(gè)參數(shù):self 。它是對(duì)調(diào)用這個(gè)方法的對(duì)象的引用。self 參數(shù)能讓你訪問到調(diào)用對(duì)象的屬性。在這個(gè)例子中,self 用來訪問 Rocket 對(duì)象的 y 屬性。這個(gè)方法被調(diào)用一次,對(duì)象的 y 屬性就增加1。為了更近一步了解方法的運(yùn)行過程,仔細(xì)閱讀下述代碼,并觀察它們的輸出。
class Rocket(): # Rocket simulates a rocket ship for a game, # or a physics simulation. def __init__(self): # Each rocket has an (x,y) position. self.x = 0 self.y = 0 def move_up(self): # Increment the y-position of the rocket. self.y += 1# Create a Rocket object, and have it start to move up.my_rocket = Rocket()print('Rocket altitude:', my_rocket.y)my_rocket.move_up()print('Rocket altitude:', my_rocket.y)
創(chuàng)建多個(gè)對(duì)象
面向?qū)ο缶幊桃粋€(gè)重要目標(biāo)是創(chuàng)建可重用代碼。一旦你寫好了類,就能創(chuàng)建任意數(shù)量的對(duì)象。通常,類被放進(jìn)一個(gè)單獨(dú)的文件中,在需要的時(shí)候?qū)氤绦蛑小R虼四憧梢詣?chuàng)建一個(gè)類庫(kù),在不同的程序中重復(fù)使用這些類。
在一個(gè)類上創(chuàng)建多個(gè)對(duì)象,示例如下:
class Rocket(): # Rocket simulates a rocket ship for a game,# Rocket # or a physics simulation. def __init__(self): # Each rocket has an (x,y) position. self.x = 0 self.y = 0 def move_up(self): # Increment the y-position of the rocket. self.y += 1 # Create a fleet of 5 rockets, and store them in a list.my_rockets = []for x in range(0,5): new_rocket = Rocket() my_rockets.append(new_rocket)# Show that each rocket is a separate object.for rocket in my_rockets: print(rocket)
內(nèi)容擴(kuò)展:
初識(shí)類和對(duì)象
python中一切皆為對(duì)象,類型的本質(zhì)就是類,所以,不管你信不信,你已經(jīng)使用了很長(zhǎng)時(shí)間的類了
>>> dict #類型dict就是類dict<class ’dict’>>>> d=dict(name=’eva’) #實(shí)例化>>> d.pop(’name’) #向d發(fā)一條消息,執(zhí)行d的方法pop’eva’
從上面的例子來看,字典就是一類數(shù)據(jù)結(jié)構(gòu),我一說字典你就知道是那個(gè)用{}表示,里面由k-v鍵值對(duì)的東西,它還具有一些增刪改查的方法。但是我一說字典你能知道字典里具體存了哪些內(nèi)容么?不能,所以我們說對(duì)于一個(gè)類來說,它具有相同的特征屬性和方法。
而具體的{’name’:’eva’}這個(gè)字典,它是一個(gè)字典,可以使用字典的所有方法,并且里面有了具體的值,它就是字典的一個(gè)對(duì)象。對(duì)象就是已經(jīng)實(shí)實(shí)在在存在的某一個(gè)具體的個(gè)體。
再舉一個(gè)其他的例子,通俗一點(diǎn),比如你現(xiàn)在有一個(gè)動(dòng)物園,你想描述這個(gè)動(dòng)物園,那么動(dòng)物園里的每一種動(dòng)物就是一個(gè)類,老虎、天鵝、鱷魚、熊。他們都有相同的屬性,比如身高體重出生時(shí)間和品種,還有各種動(dòng)作,比如鱷魚會(huì)游泳,天鵝會(huì)飛,老虎會(huì)跑,熊會(huì)吃。
但是這些老虎熊啥的都不是具體的某一只,而是一類動(dòng)物。雖然他們都有身高體重,但是你卻沒有辦法確定這個(gè)值是多少。如果這個(gè)時(shí)候給你一只具體的老虎,而你還沒死,那你就能給他量量身高稱稱體重,這些數(shù)值是不是就變成具體的了?那么具體的這一只老虎就是一個(gè)具體的實(shí)例,也是一個(gè)對(duì)象。不止這一只,其實(shí)每一只具體的老虎都有自己的身高體重,那么每一只老虎都是老虎類的一個(gè)對(duì)象。
到此這篇關(guān)于如何理解python面向?qū)ο缶幊痰奈恼戮徒榻B到這了,更多相關(guān)python面向?qū)ο缶幊淘斀鈨?nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
