詳解Python:面向?qū)ο缶幊?/h1>
更新時間:2019年04月10日 14:09:09 作者:Tendency1060
這篇文章主要介紹了Python面向?qū)ο缶幊?,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
面向過程的程序設(shè)計把計算機程序視為一系列的命令集合,即一組函數(shù)的順序執(zhí)行。為了簡化程序設(shè)計,面向過程把函數(shù)繼續(xù)切分為子函數(shù),即把大塊函數(shù)通過切割成小塊函數(shù)來降低系統(tǒng)的復(fù)雜度
python和java都是面向?qū)ο蟮恼Z言。面向?qū)ο缶幊痰奶攸c數(shù)據(jù)封裝、繼承和多態(tài)
1.類和實例
面向?qū)ο笞钪匾母拍罹褪穷悾–lass)和實例(Instance),必須牢記類是抽象的模板,比如Student類,而實例是根據(jù)類創(chuàng)建出來的一個個具體的“對象”,每個對象都擁有相同的方法,但各自的數(shù)據(jù)可能不同。
在python中,定義類同樣也是使用class關(guān)鍵字,class后面緊跟著的是類名,需要開頭大寫,之后的括號里表示的是繼承的哪個類,即它的父類。
class Student(object):
pass
我們可以自由地給這個變量綁定屬性
>>>nick.name = 'Liu Ling Hao'
>>>nick.name
'Liu Ling Hao'
而之后定義的不同的函數(shù)則是方法??偨Y(jié)來說對象=屬性+方法
由于類可以起到模板的作用,因此,可以在創(chuàng)建實例的時候,把一些我們認為必須綁定的屬性強制填寫進去。此時就需要用到比較特殊的__init__方法。(int 前后各有兩個下劃線)
__init__方法的第一個參數(shù)永遠是self,表示創(chuàng)建的實例本身。
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = scor
>>> bart = Student('Bart Simpson', 59)
>>> bart.name
'Bart Simpson'
>>> bart.score
59
當有了__init__方法之后,在創(chuàng)建實例的時候,就不能傳入空的參數(shù)了,必須傳入與__init__方法匹配的參數(shù)
2.封裝,繼承和多態(tài)
面向?qū)ο缶幊痰囊粋€重要特點就是數(shù)據(jù)封裝。
就像上面例子中的name和score,我們可以直接在類的內(nèi)部定義的函數(shù)去訪問,,比如可以添加一個數(shù)據(jù)或者對于一個列表進行排序,我們可以實現(xiàn),但是我們并不知道它的內(nèi)部是通過如何調(diào)節(jié)而實現(xiàn)的。
當我們定義一個class的時候,可以從某個現(xiàn)有的class繼承,新的class稱為子類(Subclass),而被繼承的class稱為基類、父類或超類(Base class、Super class)。
繼承的好處就是獲得了父類的全部功能,對于子類而言,可以在父類的基礎(chǔ)上接著寫,更加方便
class Person(object):
def idea(self):
print('study is happy')
class Liu(Person):
pass
liu =Liu()
liu.idea
study is happy
當然子類如果有和父類同樣的方法時會自動覆蓋掉父類的
多態(tài):不同對象對同一方法響應(yīng)不同的行動
>>>class Nick1:
def name(self):
print("我是1")
>>>class Nick2:
def name(self):
print("我是2")
>>>a = Nick1()
>>>b = Nick2()
>>>a.name
我是1
>>>b.name
我是2
使用的函數(shù)名雖然一樣但是實現(xiàn)并不一樣。
def run(animal):
animal.run()
animal.run()
>>> run(Animal())
Animal is running...
Animal is running...
>>> run_twice(Dog())
Dog is running...
Dog is running...
多態(tài)的好處就是,當我們需要傳入Dog或者其它動物時,我們只需要接收Animal類型就可以了,因為Dog都是Animal類型,然后,按照Animal類型進行操作即可。由于Animal類型有run()方法,因此,傳入的任意類型,只要是Animal類或者子類,就會自動調(diào)用實際類型的run()方法,這就是多態(tài)
以上所述是小編給大家介紹的Python面向?qū)ο缶幊淘斀庹?,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
-
Python之根據(jù)輸入?yún)?shù)計算結(jié)果案例講解
這篇文章主要介紹了Python之根據(jù)輸入?yún)?shù)計算結(jié)果案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下 2021-07-07
-
Python開發(fā)如何在ubuntu 15.10 上配置vim
這篇文章主要介紹了Python開發(fā)如何在ubuntu 15.10 上配置vim 的相關(guān)資料,需要的朋友可以參考下 2016-01-01
-
Python數(shù)據(jù)結(jié)構(gòu)與算法之跳表詳解
跳表是帶有附加指針的鏈表,使用這些附加指針可以跳過一些中間結(jié)點,用以快速完成查找、插入和刪除等操作。本節(jié)將詳細介紹跳表的相關(guān)概念及其具體實現(xiàn),需要的可以參考一下 2022-02-02
-
python登錄WeChat 實現(xiàn)自動回復(fù)實例詳解
在本篇內(nèi)容里小編給大家整理的是關(guān)于python登錄WeChat 實現(xiàn)自動回復(fù)的相關(guān)實例內(nèi)容以及知識點總結(jié),有興趣的朋友們參考下。 2019-05-05
最新評論
面向過程的程序設(shè)計把計算機程序視為一系列的命令集合,即一組函數(shù)的順序執(zhí)行。為了簡化程序設(shè)計,面向過程把函數(shù)繼續(xù)切分為子函數(shù),即把大塊函數(shù)通過切割成小塊函數(shù)來降低系統(tǒng)的復(fù)雜度
python和java都是面向?qū)ο蟮恼Z言。面向?qū)ο缶幊痰奶攸c數(shù)據(jù)封裝、繼承和多態(tài)
1.類和實例
面向?qū)ο笞钪匾母拍罹褪穷悾–lass)和實例(Instance),必須牢記類是抽象的模板,比如Student類,而實例是根據(jù)類創(chuàng)建出來的一個個具體的“對象”,每個對象都擁有相同的方法,但各自的數(shù)據(jù)可能不同。
在python中,定義類同樣也是使用class關(guān)鍵字,class后面緊跟著的是類名,需要開頭大寫,之后的括號里表示的是繼承的哪個類,即它的父類。
class Student(object): pass
我們可以自由地給這個變量綁定屬性
>>>nick.name = 'Liu Ling Hao' >>>nick.name 'Liu Ling Hao'
而之后定義的不同的函數(shù)則是方法??偨Y(jié)來說對象=屬性+方法
由于類可以起到模板的作用,因此,可以在創(chuàng)建實例的時候,把一些我們認為必須綁定的屬性強制填寫進去。此時就需要用到比較特殊的__init__方法。(int 前后各有兩個下劃線)
__init__方法的第一個參數(shù)永遠是self,表示創(chuàng)建的實例本身。
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = scor
>>> bart = Student('Bart Simpson', 59)
>>> bart.name
'Bart Simpson'
>>> bart.score
59
當有了__init__方法之后,在創(chuàng)建實例的時候,就不能傳入空的參數(shù)了,必須傳入與__init__方法匹配的參數(shù)
2.封裝,繼承和多態(tài)
面向?qū)ο缶幊痰囊粋€重要特點就是數(shù)據(jù)封裝。
就像上面例子中的name和score,我們可以直接在類的內(nèi)部定義的函數(shù)去訪問,,比如可以添加一個數(shù)據(jù)或者對于一個列表進行排序,我們可以實現(xiàn),但是我們并不知道它的內(nèi)部是通過如何調(diào)節(jié)而實現(xiàn)的。
當我們定義一個class的時候,可以從某個現(xiàn)有的class繼承,新的class稱為子類(Subclass),而被繼承的class稱為基類、父類或超類(Base class、Super class)。
繼承的好處就是獲得了父類的全部功能,對于子類而言,可以在父類的基礎(chǔ)上接著寫,更加方便
class Person(object):
def idea(self):
print('study is happy')
class Liu(Person):
pass
liu =Liu()
liu.idea
study is happy
當然子類如果有和父類同樣的方法時會自動覆蓋掉父類的
多態(tài):不同對象對同一方法響應(yīng)不同的行動
>>>class Nick1:
def name(self):
print("我是1")
>>>class Nick2:
def name(self):
print("我是2")
>>>a = Nick1()
>>>b = Nick2()
>>>a.name
我是1
>>>b.name
我是2
使用的函數(shù)名雖然一樣但是實現(xiàn)并不一樣。
def run(animal): animal.run() animal.run() >>> run(Animal()) Animal is running... Animal is running... >>> run_twice(Dog()) Dog is running... Dog is running...
多態(tài)的好處就是,當我們需要傳入Dog或者其它動物時,我們只需要接收Animal類型就可以了,因為Dog都是Animal類型,然后,按照Animal類型進行操作即可。由于Animal類型有run()方法,因此,傳入的任意類型,只要是Animal類或者子類,就會自動調(diào)用實際類型的run()方法,這就是多態(tài)
以上所述是小編給大家介紹的Python面向?qū)ο缶幊淘斀庹?,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Python之根據(jù)輸入?yún)?shù)計算結(jié)果案例講解
這篇文章主要介紹了Python之根據(jù)輸入?yún)?shù)計算結(jié)果案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07
Python開發(fā)如何在ubuntu 15.10 上配置vim
這篇文章主要介紹了Python開發(fā)如何在ubuntu 15.10 上配置vim 的相關(guān)資料,需要的朋友可以參考下2016-01-01
Python數(shù)據(jù)結(jié)構(gòu)與算法之跳表詳解
跳表是帶有附加指針的鏈表,使用這些附加指針可以跳過一些中間結(jié)點,用以快速完成查找、插入和刪除等操作。本節(jié)將詳細介紹跳表的相關(guān)概念及其具體實現(xiàn),需要的可以參考一下2022-02-02
python登錄WeChat 實現(xiàn)自動回復(fù)實例詳解
在本篇內(nèi)容里小編給大家整理的是關(guān)于python登錄WeChat 實現(xiàn)自動回復(fù)的相關(guān)實例內(nèi)容以及知識點總結(jié),有興趣的朋友們參考下。2019-05-05

