如何理解python面向?qū)ο缶幊?/h1>
更新時間:2020年06月01日 16:02:13 作者:silencement
在本篇文章里小編給大家整理的是關(guān)于如何理解python面向?qū)ο缶幊痰南嚓P(guān)知識點,需要的朋友們可以學習下。
類是面向?qū)ο蟪绦蛟O計的一部分。面向?qū)ο蟪绦蛟O計或者簡稱為 OOP 致力于創(chuàng)建可重用代碼塊稱之為類。當你想在你的程序中使用類時,你會從類中創(chuàng)建一個對象,這也是面向?qū)ο笠辉~的由來。Python 并不總是面向?qū)ο蟮模悄銜谀愕捻椖恐杏玫綄ο?。為了理解類,你需要理解面向?qū)ο蟮囊恍┗A術(shù)語。
常用術(shù)語
class:類。類是代碼塊的主體,其中定義了建立的模型的屬性和行為。這個模型可以來自于真實世界,也可以是虛擬游戲等。
attribute:屬性。是一系列信息的集合。在類中,一個屬性通常是一個變量。
behavior:行為。行為是定義在類中,組成方法的部分。也即是定義在類中函數(shù)的一部分。
method:方法。類中的函數(shù),由 behavior 組成。
object:對象。對象是類的實例。一個對象中包含所有類中屬性的值。你可以為一個類創(chuàng)建任意數(shù)量的對象。
近距離觀察 Rocket 類
我們已經(jīng)了解到一些類的基本術(shù)語,讓我們回頭再分析一下上節(jié)提到的 Rocket 類。
__init__() 方法
定義一個初始代碼塊,如下所示:
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 準備定義一個類。類名的命名規(guī)則和變量的相同,但是 Python 中有一個約定好的規(guī)則,類名必須是駝峰式的。也即每個單詞的開頭必須是大寫的,不允許下劃線的出現(xiàn)。類名后緊跟一對圓括號,目前為止圓括號里都是空的,接下來的學習中,其中可能會包含一個類。這個類是新類基于的類。
前后都有兩個下劃線的函數(shù)是內(nèi)置在 Python 中的有特殊用途的函數(shù)。__init__() 函數(shù)就是一個特殊的函數(shù)。當創(chuàng)建一個類的對象時,它會自動執(zhí)行。我們可以稱之為初始化函數(shù),在對象使用之前初始化一些必要的屬性。在這個例子中,__init__() 函數(shù)初始化了 x 和 y 屬性。
關(guān)鍵字 self 可能會有些難以理解。單詞 "self" 指向當前的對象。當你創(chuàng)建一個類時,它可以訪問到類中的任意指定屬性。基本上,類中所有的函數(shù)都需要 self 對象作為第一個參數(shù),因此它們就可以訪問類中的屬性。
現(xiàn)在,讓我們看看類中的方法吧!
一個簡單的方法
下述代碼在 Rocket 類中定義了一個方法。
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ù)能做的事。
默認情況下,每個函數(shù)都需要接受一個參數(shù):self 。它是對調(diào)用這個方法的對象的引用。self 參數(shù)能讓你訪問到調(diào)用對象的屬性。在這個例子中,self 用來訪問 Rocket 對象的 y 屬性。這個方法被調(diào)用一次,對象的 y 屬性就增加1。為了更近一步了解方法的運行過程,仔細閱讀下述代碼,并觀察它們的輸出。
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)建多個對象
面向?qū)ο缶幊桃粋€重要目標是創(chuàng)建可重用代碼。一旦你寫好了類,就能創(chuàng)建任意數(shù)量的對象。通常,類被放進一個單獨的文件中,在需要的時候?qū)氤绦蛑?。因此你可以?chuàng)建一個類庫,在不同的程序中重復使用這些類。
在一個類上創(chuàng)建多個對象,示例如下:
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)容擴展:
初識類和對象
python中一切皆為對象,類型的本質(zhì)就是類,所以,不管你信不信,你已經(jīng)使用了很長時間的類了
>>> dict #類型dict就是類dict
<class 'dict'>
>>> d=dict(name='eva') #實例化
>>> d.pop('name') #向d發(fā)一條消息,執(zhí)行d的方法pop
'eva'
從上面的例子來看,字典就是一類數(shù)據(jù)結(jié)構(gòu),我一說字典你就知道是那個用{}表示,里面由k-v鍵值對的東西,它還具有一些增刪改查的方法。但是我一說字典你能知道字典里具體存了哪些內(nèi)容么?不能,所以我們說對于一個類來說,它具有相同的特征屬性和方法。
而具體的{'name':'eva'}這個字典,它是一個字典,可以使用字典的所有方法,并且里面有了具體的值,它就是字典的一個對象。對象就是已經(jīng)實實在在存在的某一個具體的個體。
再舉一個其他的例子,通俗一點,比如你現(xiàn)在有一個動物園,你想描述這個動物園,那么動物園里的每一種動物就是一個類,老虎、天鵝、鱷魚、熊。他們都有相同的屬性,比如身高體重出生時間和品種,還有各種動作,比如鱷魚會游泳,天鵝會飛,老虎會跑,熊會吃。
但是這些老虎熊啥的都不是具體的某一只,而是一類動物。雖然他們都有身高體重,但是你卻沒有辦法確定這個值是多少。如果這個時候給你一只具體的老虎,而你還沒死,那你就能給他量量身高稱稱體重,這些數(shù)值是不是就變成具體的了?那么具體的這一只老虎就是一個具體的實例,也是一個對象。不止這一只,其實每一只具體的老虎都有自己的身高體重,那么每一只老虎都是老虎類的一個對象。
到此這篇關(guān)于如何理解python面向?qū)ο缶幊痰奈恼戮徒榻B到這了,更多相關(guān)python面向?qū)ο缶幊淘斀鈨?nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
-
Python3爬蟲里關(guān)于Splash負載均衡配置詳解
在本篇文章里小編給大家分享了關(guān)于Python3爬蟲里關(guān)于Splash負載均衡配置的相關(guān)內(nèi)容,需要的朋友們可以學習參考下。 2020-07-07
-
Python實現(xiàn)自定義函數(shù)的5種常見形式分析
這篇文章主要介紹了Python實現(xiàn)自定義函數(shù)的5種常見形式,結(jié)合實例形式較為詳細的分析了Python自定義函數(shù)相關(guān)的參數(shù)、默認值、隱函數(shù)等相關(guān)操作技巧與注意事項,需要的朋友可以參考下 2018-06-06
-
Python 如何實時向文件寫入數(shù)據(jù)(附代碼)
這篇文章主要介紹了Python 如何實時向文件寫入數(shù)據(jù)(附代碼),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教 2022-07-07
-
Python IDLE 錯誤:IDLE''''s subprocess didn''''t make connectio
這篇文章主要介紹了Python IDLE 錯誤:IDLE's subprocess didn't make connection 的解決方案的相關(guān)資料,需要的朋友可以參考下 2017-02-02
-
python 阿里云oss實現(xiàn)直傳簽名與回調(diào)驗證的示例方法
這篇文章主要介紹了python 阿里云oss實現(xiàn)直傳簽名與回調(diào)驗證,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧 2021-03-03
-
python的pygal模塊繪制反正切函數(shù)圖像方法
在本篇文章中我們給大家整理了關(guān)于如何用python的pygal模塊繪制反正切函數(shù)圖像的知識點內(nèi)容,有需要的朋友們可以學習下。 2019-07-07
最新評論
類是面向?qū)ο蟪绦蛟O計的一部分。面向?qū)ο蟪绦蛟O計或者簡稱為 OOP 致力于創(chuàng)建可重用代碼塊稱之為類。當你想在你的程序中使用類時,你會從類中創(chuàng)建一個對象,這也是面向?qū)ο笠辉~的由來。Python 并不總是面向?qū)ο蟮模悄銜谀愕捻椖恐杏玫綄ο?。為了理解類,你需要理解面向?qū)ο蟮囊恍┗A術(shù)語。
常用術(shù)語
class:類。類是代碼塊的主體,其中定義了建立的模型的屬性和行為。這個模型可以來自于真實世界,也可以是虛擬游戲等。
attribute:屬性。是一系列信息的集合。在類中,一個屬性通常是一個變量。
behavior:行為。行為是定義在類中,組成方法的部分。也即是定義在類中函數(shù)的一部分。
method:方法。類中的函數(shù),由 behavior 組成。
object:對象。對象是類的實例。一個對象中包含所有類中屬性的值。你可以為一個類創(chuàng)建任意數(shù)量的對象。
近距離觀察 Rocket 類
我們已經(jīng)了解到一些類的基本術(shù)語,讓我們回頭再分析一下上節(jié)提到的 Rocket 類。
__init__() 方法
定義一個初始代碼塊,如下所示:
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 準備定義一個類。類名的命名規(guī)則和變量的相同,但是 Python 中有一個約定好的規(guī)則,類名必須是駝峰式的。也即每個單詞的開頭必須是大寫的,不允許下劃線的出現(xiàn)。類名后緊跟一對圓括號,目前為止圓括號里都是空的,接下來的學習中,其中可能會包含一個類。這個類是新類基于的類。
前后都有兩個下劃線的函數(shù)是內(nèi)置在 Python 中的有特殊用途的函數(shù)。__init__() 函數(shù)就是一個特殊的函數(shù)。當創(chuàng)建一個類的對象時,它會自動執(zhí)行。我們可以稱之為初始化函數(shù),在對象使用之前初始化一些必要的屬性。在這個例子中,__init__() 函數(shù)初始化了 x 和 y 屬性。
關(guān)鍵字 self 可能會有些難以理解。單詞 "self" 指向當前的對象。當你創(chuàng)建一個類時,它可以訪問到類中的任意指定屬性。基本上,類中所有的函數(shù)都需要 self 對象作為第一個參數(shù),因此它們就可以訪問類中的屬性。
現(xiàn)在,讓我們看看類中的方法吧!
一個簡單的方法
下述代碼在 Rocket 類中定義了一個方法。
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ù)能做的事。
默認情況下,每個函數(shù)都需要接受一個參數(shù):self 。它是對調(diào)用這個方法的對象的引用。self 參數(shù)能讓你訪問到調(diào)用對象的屬性。在這個例子中,self 用來訪問 Rocket 對象的 y 屬性。這個方法被調(diào)用一次,對象的 y 屬性就增加1。為了更近一步了解方法的運行過程,仔細閱讀下述代碼,并觀察它們的輸出。
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)建多個對象
面向?qū)ο缶幊桃粋€重要目標是創(chuàng)建可重用代碼。一旦你寫好了類,就能創(chuàng)建任意數(shù)量的對象。通常,類被放進一個單獨的文件中,在需要的時候?qū)氤绦蛑?。因此你可以?chuàng)建一個類庫,在不同的程序中重復使用這些類。
在一個類上創(chuàng)建多個對象,示例如下:
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)容擴展:
初識類和對象
python中一切皆為對象,類型的本質(zhì)就是類,所以,不管你信不信,你已經(jīng)使用了很長時間的類了
>>> dict #類型dict就是類dict <class 'dict'> >>> d=dict(name='eva') #實例化 >>> d.pop('name') #向d發(fā)一條消息,執(zhí)行d的方法pop 'eva'
從上面的例子來看,字典就是一類數(shù)據(jù)結(jié)構(gòu),我一說字典你就知道是那個用{}表示,里面由k-v鍵值對的東西,它還具有一些增刪改查的方法。但是我一說字典你能知道字典里具體存了哪些內(nèi)容么?不能,所以我們說對于一個類來說,它具有相同的特征屬性和方法。
而具體的{'name':'eva'}這個字典,它是一個字典,可以使用字典的所有方法,并且里面有了具體的值,它就是字典的一個對象。對象就是已經(jīng)實實在在存在的某一個具體的個體。
再舉一個其他的例子,通俗一點,比如你現(xiàn)在有一個動物園,你想描述這個動物園,那么動物園里的每一種動物就是一個類,老虎、天鵝、鱷魚、熊。他們都有相同的屬性,比如身高體重出生時間和品種,還有各種動作,比如鱷魚會游泳,天鵝會飛,老虎會跑,熊會吃。
但是這些老虎熊啥的都不是具體的某一只,而是一類動物。雖然他們都有身高體重,但是你卻沒有辦法確定這個值是多少。如果這個時候給你一只具體的老虎,而你還沒死,那你就能給他量量身高稱稱體重,這些數(shù)值是不是就變成具體的了?那么具體的這一只老虎就是一個具體的實例,也是一個對象。不止這一只,其實每一只具體的老虎都有自己的身高體重,那么每一只老虎都是老虎類的一個對象。
到此這篇關(guān)于如何理解python面向?qū)ο缶幊痰奈恼戮徒榻B到這了,更多相關(guān)python面向?qū)ο缶幊淘斀鈨?nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python3爬蟲里關(guān)于Splash負載均衡配置詳解
在本篇文章里小編給大家分享了關(guān)于Python3爬蟲里關(guān)于Splash負載均衡配置的相關(guān)內(nèi)容,需要的朋友們可以學習參考下。2020-07-07Python實現(xiàn)自定義函數(shù)的5種常見形式分析
這篇文章主要介紹了Python實現(xiàn)自定義函數(shù)的5種常見形式,結(jié)合實例形式較為詳細的分析了Python自定義函數(shù)相關(guān)的參數(shù)、默認值、隱函數(shù)等相關(guān)操作技巧與注意事項,需要的朋友可以參考下2018-06-06Python 如何實時向文件寫入數(shù)據(jù)(附代碼)
這篇文章主要介紹了Python 如何實時向文件寫入數(shù)據(jù)(附代碼),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07Python IDLE 錯誤:IDLE''''s subprocess didn''''t make connectio
這篇文章主要介紹了Python IDLE 錯誤:IDLE's subprocess didn't make connection 的解決方案的相關(guān)資料,需要的朋友可以參考下2017-02-02python 阿里云oss實現(xiàn)直傳簽名與回調(diào)驗證的示例方法
這篇文章主要介紹了python 阿里云oss實現(xiàn)直傳簽名與回調(diào)驗證,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03python的pygal模塊繪制反正切函數(shù)圖像方法
在本篇文章中我們給大家整理了關(guān)于如何用python的pygal模塊繪制反正切函數(shù)圖像的知識點內(nèi)容,有需要的朋友們可以學習下。2019-07-07