-
1、面向?qū)ο蟮母拍?/strong>
常用的編程方式有兩種:面向過程 和 面向?qū)ο?/strong>屉凯。
面向過程:是早期程序員所使用的方法,首先將問題分解成步驟眼溶,然后用函數(shù)逐個(gè)按次序?qū)崿F(xiàn)悠砚,運(yùn)行的時(shí)候依次調(diào)用即可。
面向?qū)ο?/strong>:是指把構(gòu)成問題的事務(wù)分解組合抽象成對(duì)象堂飞,建立對(duì)象的目的不是為了完成其中某個(gè)步驟灌旧,而是為了描述某個(gè)事務(wù)在解決整個(gè)問題中的行為,可能涉及一個(gè)步驟绰筛,但通常都會(huì)涉及多個(gè)步驟枢泰,很好地體現(xiàn)了軟件重用的思想。Python 在涉及之初就是一門面向?qū)ο蟮恼Z言铝噩。
-
看幾個(gè)概念:
- 類(class):對(duì)具有相同屬性和方法的一組對(duì)象的描述或定義衡蚂。
- 對(duì)象(object):類的實(shí)例。
- 實(shí)例(Inatance):其含義與對(duì)象基本一致骏庸。創(chuàng)建一個(gè)新對(duì)象的過程稱為實(shí)例化(Instantiation),這個(gè)新對(duì)象稱為這個(gè)類的一個(gè)實(shí)例毛甲。
- 標(biāo)識(shí)(Identity): 每個(gè)實(shí)例對(duì)象的唯一標(biāo)識(shí)。
- 實(shí)例屬性(Inatance Attribute): 特定對(duì)象所具有的一組屬性的集合具被。
- 實(shí)例方法(Inatance Method): 對(duì)于特定對(duì)象實(shí)例的一條或多條屬性的操作函數(shù)集合丽啡。
- 類屬性(Class Attribute): 屬于一個(gè)類中所有對(duì)象的屬性,不會(huì)只在某個(gè)實(shí)例上發(fā)生變化硬猫。
- 類方法(Class Method):那些無須指定實(shí)例就能夠工作的從屬于類的函數(shù)补箍。
-
2改执、類與實(shí)例
-
創(chuàng)建類和子類:類使用class關(guān)鍵字創(chuàng)建,類的屬性和方法被列在一個(gè)縮進(jìn)塊中坑雅。如下:
# 類 class animals: pass # 子類 class mammals(animals): pass
-
用函數(shù)表示類的行為特征:為類和子類創(chuàng)建行為特征---函數(shù)辈挂,如下:
class animals: def breth(self): print("呼吸") class mammals(animals): def move(self): print("奔跑") class dog(mammals): def eat(self): print("吃") Bob = dog() Bob.move() Bob.eat() 運(yùn)行結(jié)果: 奔跑 吃
-
-
3、面向?qū)ο蟮奶卣?/strong>
Python程序是面向?qū)ο蟮某绦?/strong>裹粤,具有三個(gè)特征:封裝终蒂、繼承和多態(tài)。
-
封裝是指將對(duì)象得到的數(shù)據(jù)和行為結(jié)合遥诉,將基本類結(jié)構(gòu)的細(xì)節(jié)隱藏起來拇泣,通過方法接口實(shí)現(xiàn)對(duì)實(shí)例變量的所有訪問。Python中允許對(duì)類的數(shù)據(jù)和方法進(jìn)行封裝矮锈,下面的例子封裝了類中的數(shù)據(jù)霉翔,將公司名和領(lǐng)導(dǎo)人分別封裝到對(duì)象objc1和objc2中的self的 companyname 和 leader屬性中。
class Company: def __init__(self,companyname,leader): self. companyname = companyname self. leader = leader if __name__ == "__main__": objc1 = Company("a","Nike") objc1 = Company("b","Jack")
在調(diào)用數(shù)據(jù)時(shí)苞笨,可以使用兩種方式:通過對(duì)象直接調(diào)用和通過self直接調(diào)用债朵。例如:
class Company: def __init__(self, companyname, leader): self.companyname = companyname self.leader = leader def show(self): print(self.companyname) print(self.leader) if __name__ == "__main__": objc1 = Company("a", "Nike") objc2 = Company("b", "Jack") # 通過對(duì)象直接調(diào)用封裝的數(shù)據(jù) print(objc1.companyname) print(objc1.leader) 運(yùn)行結(jié)果為: a Nike # 通過self來間接調(diào)用,self即對(duì)象本身 objc1.show() objc2.show() 運(yùn)行結(jié)果為: a Nike b Jack
-
繼承:當(dāng)已經(jīng)存在一個(gè)類瀑凝,需要另外再創(chuàng)建一個(gè)和已有類型非常相似的類時(shí)序芦,通常不必將同一段代碼重復(fù)多次,而是用繼承粤咪。在類上添加關(guān)聯(lián)谚中,使得位于不同層次的類可以“繼承”位于關(guān)系上層的類的屬性。繼承有利于代碼的復(fù)用和模塊化寥枝。和其他語言不同的是藏杖,Python 中的類還具有多繼承的特性。即一個(gè)類可以有多個(gè)父類脉顿。
-
繼承一個(gè)父類: 下面這個(gè)例子中蝌麸,Company類 只有Scale 一個(gè)父類。當(dāng)調(diào)用
check()
方法時(shí)艾疟,Company 本身沒有定義check()
方法来吩,代碼就會(huì)向上自動(dòng)檢測(cè)父類Scale中是否存在check()
方法,結(jié)果父類中找到了該方法蔽莱,次為單繼承弟疆,即只有一個(gè)父類。class Scale: def check(self): if self.count_person > 500: print("%s是個(gè)大公司." % self.name) else: print("%s是個(gè)小公司." % self.name) class Company(Scale): def __init__(self,name,count): self.name = name self.count_person = count if __name__ == "__main__": my_company = Company("JK",600) my_company.check()
-
繼承多個(gè)父類:
class Scale: def check(self): if self.count_person > 500: return "%s是個(gè)大公司." % self.name else: return "%s是個(gè)小公司." % self.name class Detail: def show(self,scale): print("%s,公司有%s名員工."%(scale,self.count_person)) class Company(Scale,Detail): def __init__(self,name,count): self.name = name self.count_person = count if __name__ == "__main__": my_company = Company("JK",600) company_scale = my_company.check() my_company.show(company_scale) 結(jié)果為: JK是個(gè)大公司.,公司有600名員工.
在上面的例子中盗冷,類Company 分別繼承了類Scale和類Detail,可以調(diào)用父類中的check和show方法怠苔,這種繼承的方法稱為多繼承。
-
-
多態(tài): 多態(tài)即多種姿態(tài)仪糖,是指在事先不知道對(duì)象類型的情況下柑司,可以自動(dòng)根據(jù)對(duì)象的不同類型迫肖,執(zhí)行響應(yīng)的操作。很多內(nèi)建運(yùn)算符以及函數(shù)攒驰、方法都能體現(xiàn)多態(tài)的性質(zhì)蟆湖。例如:“+”運(yùn)算符,在連接數(shù)值類型變量時(shí)表示加法操作玻粪,在連接字符串時(shí)則表示拼接隅津。例如:函數(shù)的多態(tài)性舉例
>>> def length(x): print(repr(x),"的長(zhǎng)度為",len(x)) >>> print(length('aaa')) 'aaa' 的長(zhǎng)度為 3 >>> print(length([1,2,4,5,6])) [1, 2, 4, 5, 6] 的長(zhǎng)度為 5
函數(shù) repr() 返回一個(gè)對(duì)象的可打印字符串,無須事先知道是什么類型劲室,該函數(shù)也表現(xiàn)了Python多態(tài)特性伦仍。
-
4、庫的安裝
4.1很洋、包的管理: Python 程序一般由
包(package)
充蓝、模塊(module)
和函數(shù)(function)
三部分組成。其中 包 是一系列模塊組成的集合蹲缠,模塊是處理某類問題的函數(shù)和類的集合。一個(gè)包可以包含多個(gè)模塊悠垛,每個(gè)模塊可以包含多個(gè)函數(shù)與類线定,同時(shí)也可以有執(zhí)行語句,每個(gè)包其實(shí)就是完成特定任務(wù)的工具箱确买。具體來說斤讥,一個(gè).py
文件可以被看做是一個(gè)獨(dú)立的模塊,一個(gè)模塊通常就是一個(gè)文件湾趾,因?yàn)槟K是按照邏輯組織代碼的方法芭商,而文件是物理層存儲(chǔ)模塊的方式。包是一個(gè)可以完整測(cè)試的搀缠、獨(dú)立開發(fā)的模塊組合铛楣,通常發(fā)布在Python 指定的文件夾里。當(dāng)多個(gè)模塊使用同一組模塊時(shí)艺普,可以將模塊封裝成包簸州,發(fā)布到公共文件里,這就是包的含義歧譬。所以說模塊對(duì)應(yīng)的物理層結(jié)構(gòu)是文件岸浑,那么包對(duì)應(yīng)的物理層結(jié)構(gòu)就是文件夾。包是通過目錄結(jié)構(gòu)組織的模塊的集合瑰步,使用包的方式跟模塊類似矢洲,可以通過import導(dǎo)入,需要注意的是缩焦,當(dāng)文件夾當(dāng)做包使用時(shí)读虏,文件夾中需要包含一個(gè)_init_.py
文件责静,主要為了避免將包當(dāng)做普通的文件夾。_init_.py
的內(nèi)容可以為空掘譬。-
4.2泰演、包管理工具: 有4種,關(guān)系如下:
- distutils: 是 Python 標(biāo)準(zhǔn)庫的一部分葱轩,為開發(fā)者提供一種方便的打開方式睦焕,同時(shí)也為使用者提供了方便的包安裝方式。
- setuptools: 是對(duì)distutils 的增強(qiáng)靴拱,引入了包依賴管理垃喊。setuptools可以為Python 包創(chuàng)建egg文件。Python 與 egg文件的關(guān)系袜炕,類似于Java語言與 jar包的關(guān)系本谜。setuptools提供的easy_install 腳本可以用來安裝 egg 包。
- easy_install:是由 PEAK (Python Enterprise Application Kit) 開發(fā)的setuptools包里帶的一個(gè)命令偎窘,所以使用easy_install實(shí)際上是在調(diào)用 setuptools 來完成模塊的工作乌助。easy_install可以自動(dòng)從
https://pypi.python.org/pypi
下載相關(guān)的包,并完成安裝和升級(jí)陌知。 - pip:是安裝管理Python 包的標(biāo)準(zhǔn)工具他托,是對(duì)easy_install增強(qiáng)和替代,但它仍有大量的功能建立在setuptools組件之上仆葡。同樣可以從 PyPI網(wǎng)站自動(dòng)下載安裝包赏参。在pip中,安裝所需要的包都需要先下載沿盅,并且所有的安裝包都會(huì)被跟蹤把篓,因此避免了出現(xiàn)安裝不完整的情況。
-
4.3腰涧、包格式:用于Python 第三方庫安裝的包格式有以下兩種
- egg: 格式是 setuptools 引入的一種文件格式韧掩,使用.egg作為擴(kuò)展名,用setuptools識(shí)別窖铡、解析和安裝揍很。
- wheel:本質(zhì)上是 ZIP的壓縮格式,使用 .whl 作為擴(kuò)展名万伤。
4.4窒悔、安裝方式: 百度自己搜
-
5、模塊的引用
應(yīng)用Python 進(jìn)行編程時(shí)敌买,通常會(huì)使用一些庫(模塊) 來滿足開發(fā)需求简珠。Python 中庫主要分為三大類: 第一類是標(biāo)準(zhǔn)模塊,第二類是第三方模塊,第三類是自定義模塊聋庵。無論哪個(gè)庫使用之前都需要導(dǎo)入膘融。這里一個(gè)庫可能包含多個(gè)模塊,但其含義均指 module祭玉。-
5.1氧映、使用 import 方式導(dǎo)入庫
使用 import 語句導(dǎo)入模塊,語法如下:import <模塊 1> import <模塊 2>
也可以在一行內(nèi)導(dǎo)入多個(gè)模塊(可讀性差脱货,不推薦)
只要導(dǎo)入了某個(gè)模塊岛都,就可以引用它的所有公共函數(shù)、類或者屬性振峻。如果 import語句是在代碼的頂層臼疫,則它的作用域?yàn)槿郑蝗绻鹖mport語句在某個(gè)函數(shù)中扣孟,則它的作用域僅局限于該函數(shù)烫堤。
用import模塊語句導(dǎo)入模塊,就在當(dāng)前的名稱空間(NameSpace) 中建立一個(gè)指向該模塊的引用凤价,這種引用必須使用全稱鸽斟。也就是說,當(dāng)使用被導(dǎo)入的模塊的函數(shù)時(shí)利诺,在調(diào)用時(shí)必須同時(shí)包含模塊的名字富蓄,不能只使用函數(shù)名字,而應(yīng)該使用“模塊名.函數(shù)名
”,例如導(dǎo)入 繪圖模塊turtle
>>> import turtle >>> t= turtle.Pen()
若引入的模塊名稱較長(zhǎng)立轧,為方便使用格粪,通初锏酰可用 as 定義一個(gè)別名氛改。例如,導(dǎo)入 Matplotlib庫 pyplot 模塊:import Matplotlib as plt ,然后就可以直接用 plt.figure(....) 創(chuàng)建繪圖對(duì)象比伏,二不必使用 Matplotlib.pyplot.figure(...)胜卤。
-
5.2、from 方式
將模塊中指定的屬性或名稱導(dǎo)入當(dāng)前程序命名空間赁项,語法格式如下:
from <模塊名> import <函數(shù)名>
例如葛躏,導(dǎo)入畫圖模塊 turtle 中的 Pen()函數(shù):
>>> from turtle import Pen >>> t = Pen()
-
(七)Python 面向?qū)ο蟮某绦蛟O(shè)計(jì)(類)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門猾愿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹦聪,“玉大人,你說我怎么就攤上這事蒂秘≡蟊荆” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵姻僧,是天一觀的道長(zhǎng)规丽。 經(jīng)常有香客問我,道長(zhǎng)段化,這世上最難降的妖魔是什么嘁捷? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮显熏,結(jié)果婚禮上雄嚣,老公的妹妹穿的比我還像新娘。我一直安慰自己喘蟆,他們只是感情好缓升,可當(dāng)我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蕴轨,像睡著了一般港谊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上橙弱,一...
- 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼屈梁!你這毒婦竟也來了嗤练?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬榮一對(duì)情侶失蹤在讶,失蹤者是張志新(化名)和其女友劉穎煞抬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體构哺,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡革答,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝗碎。...
- 正文 年R本政府宣布眠菇,位于F島的核電站边败,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏捎废。R本人自食惡果不足惜笑窜,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望登疗。 院中可真熱鬧排截,春花似錦、人聲如沸辐益。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽智政。三九已至认罩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間续捂,已是汗流浹背垦垂。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像一罩,于是被迫代替她去往敵國(guó)和親杨幼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子撇簿,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- Python 面向?qū)ο驪ython從設(shè)計(jì)之初就已經(jīng)是一門面向?qū)ο蟮恼Z言聂渊,正因?yàn)槿绱耍赑ython中創(chuàng)建一個(gè)類和對(duì)...
- 一汉嗽、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
- 很多年過去了,那種感動(dòng)仍然還在找蜜”睿看到書架上那微微泛黃的白色書脊,指尖觸及那粗糙的封面,摩挲著厚重的書頁弓叛,隨便翻...