最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

跟老齊學(xué)Python之關(guān)于類的初步認(rèn)識(shí)

 更新時(shí)間:2014年10月11日 09:24:33   投稿:hebedich  
這篇文章主要介紹了Python中關(guān)于類的一些術(shù)語(yǔ)解釋,雖然有些枯燥,但是要了解類的話,這些內(nèi)容是必須的

在開(kāi)始部分,請(qǐng)看官非常非常耐心地閱讀下面幾個(gè)枯燥的術(shù)語(yǔ)解釋,本來(lái)這不符合本教程的風(fēng)格,但是,請(qǐng)看官諒解,因?yàn)榱形粚?lái)一定要閱讀枯燥的東西的。這些枯燥的屬于解釋,均來(lái)自維基百科。

1、問(wèn)題空間

問(wèn)題空間是問(wèn)題解決者對(duì)一個(gè)問(wèn)題所達(dá)到的全部認(rèn)識(shí)狀態(tài),它是由問(wèn)題解決者利用問(wèn)題所包含的信息和已貯存的信息主動(dòng)地構(gòu)成的。

一個(gè)問(wèn)題一般有下面三個(gè)方面來(lái)定義:
 •初始狀態(tài)——一開(kāi)始時(shí)的不完全的信息或令人不滿意的狀況;
 •目標(biāo)狀態(tài)——你希望獲得的信息或狀態(tài);
 •操作——為了從初始狀態(tài)邁向目標(biāo)狀態(tài),你可能采取的步驟。
 
這三個(gè)部分加在一起定義了問(wèn)題空間(problem space)。

2、對(duì)象

對(duì)象(object),臺(tái)灣譯作物件,是面向?qū)ο螅∣bject Oriented)中的術(shù)語(yǔ),既表示客觀世界問(wèn)題空間(Namespace)中的某個(gè)具體的事物,又表示軟件系統(tǒng)解空間中的基本元素。

在軟件系統(tǒng)中,對(duì)象具有唯一的標(biāo)識(shí)符,對(duì)象包括屬性(Properties)和方法(Methods),屬性就是需要記憶的信息,方法就是對(duì)象能夠提供的服務(wù)。在面向?qū)ο螅∣bject Oriented)的軟件中,對(duì)象(Object)是某一個(gè)類(Class)的實(shí)例(Instance)。

3、面向?qū)ο?/p>

面向?qū)ο蟪绦蛟O(shè)計(jì)(英語(yǔ):Object-oriented programming,縮寫(xiě):OOP)是一種程序設(shè)計(jì)范型,同時(shí)也是一種程序開(kāi)發(fā)的方法。對(duì)象指的是類的實(shí)例。它將對(duì)象作為程序的基本單元,將程序和數(shù)據(jù)封裝其中,以提高軟件的重用性、靈活性和擴(kuò)展性。

面向?qū)ο蟪绦蛟O(shè)計(jì)可以看作一種在程序中包含各種獨(dú)立而又互相調(diào)用的對(duì)象的思想,這與傳統(tǒng)的思想剛好相反:傳統(tǒng)的程序設(shè)計(jì)主張將程序看作一系列函數(shù)的集合,或者直接就是一系列對(duì)電腦下達(dá)的指令。面向?qū)ο蟪绦蛟O(shè)計(jì)中的每一個(gè)對(duì)象都應(yīng)該能夠接受數(shù)據(jù)、處理數(shù)據(jù)并將數(shù)據(jù)傳達(dá)給其它對(duì)象,因此它們都可以被看作一個(gè)小型的“機(jī)器”,即對(duì)象。

目前已經(jīng)被證實(shí)的是,面向?qū)ο蟪绦蛟O(shè)計(jì)推廣了程序的靈活性和可維護(hù)性,并且在大型項(xiàng)目設(shè)計(jì)中廣為應(yīng)用。 此外,支持者聲稱面向?qū)ο蟪绦蛟O(shè)計(jì)要比以往的做法更加便于學(xué)習(xí),因?yàn)樗軌蜃屓藗兏?jiǎn)單地設(shè)計(jì)并維護(hù)程序,使得程序更加便于分析、設(shè)計(jì)、理解。反對(duì)者在某些領(lǐng)域?qū)Υ擞枰苑裾J(rèn)。

當(dāng)我們提到面向?qū)ο蟮臅r(shí)候,它不僅指一種程序設(shè)計(jì)方法。它更多意義上是一種程序開(kāi)發(fā)方式。在這一方面,我們必須了解更多關(guān)于面向?qū)ο笙到y(tǒng)分析和面向?qū)ο笤O(shè)計(jì)(Object Oriented Design,簡(jiǎn)稱OOD)方面的知識(shí)。

下面再引用一段來(lái)自維基百科中關(guān)于OOP的歷史。

復(fù)制代碼 代碼如下:

面向?qū)ο蟪绦蛟O(shè)計(jì)的雛形,早在1960年的Simula語(yǔ)言中即可發(fā)現(xiàn),當(dāng)時(shí)的程序設(shè)計(jì)領(lǐng)域正面臨著一種危機(jī):在軟硬件環(huán)境逐漸復(fù)雜的情況下,軟件如何得到良好的維護(hù)?面向?qū)ο蟪绦蛟O(shè)計(jì)在某種程度上通過(guò)強(qiáng)調(diào)可重復(fù)性解決了這一問(wèn)題。20世紀(jì)70年代的Smalltalk語(yǔ)言在面向?qū)ο蠓矫婵胺Q經(jīng)典——以至于30年后的今天依然將這一語(yǔ)言視為面向?qū)ο笳Z(yǔ)言的基礎(chǔ)。
計(jì)算機(jī)科學(xué)中對(duì)象和實(shí)例概念的最早萌芽可以追溯到麻省理工學(xué)院的PDP-1系統(tǒng)。這一系統(tǒng)大概是最早的基于容量架構(gòu)(capability based architecture)的實(shí)際系統(tǒng)。另外1963年Ivan Sutherland的Sketchpad應(yīng)用中也蘊(yùn)含了同樣的思想。對(duì)象作為編程實(shí)體最早是于1960年代由Simula 67語(yǔ)言引入思維。Simula這一語(yǔ)言是奧利-約翰·達(dá)爾和克利斯登·奈加特在挪威奧斯陸計(jì)算機(jī)中心為模擬環(huán)境而設(shè)計(jì)的。(據(jù)說(shuō),他們是為了模擬船只而設(shè)計(jì)的這種語(yǔ)言,并且對(duì)不同船只間屬性的相互影響感興趣。他們將不同的船只歸納為不同的類,而每一個(gè)對(duì)象,基于它的類,可以定義它自己的屬性和行為。)這種辦法是分析式程序的最早概念體現(xiàn)。在分析式程序中,我們將真實(shí)世界的對(duì)象映射到抽象的對(duì)象,這叫做“模擬”。Simula不僅引入了“類”的概念,還應(yīng)用了實(shí)例這一思想——這可能是這些概念的最早應(yīng)用。

20世紀(jì)70年代施樂(lè)PARC研究所發(fā)明的Smalltalk語(yǔ)言將面向?qū)ο蟪绦蛟O(shè)計(jì)的概念定義為,在基礎(chǔ)運(yùn)算中,對(duì)對(duì)象和消息的廣泛應(yīng)用。Smalltalk的創(chuàng)建者深受Simula 67的主要思想影響,但Smalltalk中的對(duì)象是完全動(dòng)態(tài)的——它們可以被創(chuàng)建、修改并銷毀,這與Simula中的靜態(tài)對(duì)象有所區(qū)別。此外,Smalltalk還引入了繼承性的思想,它因此一舉超越了不可創(chuàng)建實(shí)例的程序設(shè)計(jì)模型和不具備繼承性的Simula。此外,Simula 67的思想亦被應(yīng)用在許多不同的語(yǔ)言,如Lisp、Pascal。

面向?qū)ο蟪绦蛟O(shè)計(jì)在80年代成為了一種主導(dǎo)思想,這主要應(yīng)歸功于C++——C語(yǔ)言的擴(kuò)充版。在圖形用戶界面(GUI)日漸崛起的情況下,面向?qū)ο蟪绦蛟O(shè)計(jì)很好地適應(yīng)了潮流。GUI和面向?qū)ο蟪绦蛟O(shè)計(jì)的緊密關(guān)聯(lián)在Mac OS X中可見(jiàn)一斑。Mac OS X是由Objective-C語(yǔ)言寫(xiě)成的,這一語(yǔ)言是一個(gè)仿Smalltalk的C語(yǔ)言擴(kuò)充版。面向?qū)ο蟪绦蛟O(shè)計(jì)的思想也使事件處理式的程序設(shè)計(jì)更加廣泛被應(yīng)用(雖然這一概念并非僅存在于面向?qū)ο蟪绦蛟O(shè)計(jì))。一種說(shuō)法是,GUI的引入極大地推動(dòng)了面向?qū)ο蟪绦蛟O(shè)計(jì)的發(fā)展。

蘇黎世聯(lián)邦理工學(xué)院的尼克勞斯·維爾特和他的同事們對(duì)抽象數(shù)據(jù)和模塊化程序設(shè)計(jì)進(jìn)行了研究。Modula-2將這些都包括了進(jìn)去,而Oberon則包括了一種特殊的面向?qū)ο蠓椒ā煌赟malltalk與C++。

面向?qū)ο蟮奶匦砸脖患尤肓水?dāng)時(shí)較為流行的語(yǔ)言:Ada、BASIC、Lisp、Fortran、Pascal以及種種。由于這些語(yǔ)言最初并沒(méi)有面向?qū)ο蟮脑O(shè)計(jì),故而這種糅合常常會(huì)導(dǎo)致兼容性和維護(hù)性的問(wèn)題。與之相反的是,“純正的”面向?qū)ο笳Z(yǔ)言卻缺乏一些程序員們賴以生存的特性。在這一大環(huán)境下,開(kāi)發(fā)新的語(yǔ)言成為了當(dāng)務(wù)之急。作為先行者,Eiffel成功地解決了這些問(wèn)題,并成為了當(dāng)時(shí)較受歡迎的語(yǔ)言。

在過(guò)去的幾年中,Java語(yǔ)言成為了廣為應(yīng)用的語(yǔ)言,除了它與C和C++語(yǔ)法上的近似性。Java的可移植性是它的成功中不可磨滅的一步,因?yàn)檫@一特性,已吸引了龐大的程序員群的投入。

在最近的計(jì)算機(jī)語(yǔ)言發(fā)展中,一些既支持面向?qū)ο蟪绦蛟O(shè)計(jì),又支持面向過(guò)程程序設(shè)計(jì)的語(yǔ)言悄然浮出水面。它們中的佼佼者有Python、Ruby等等。

正如面向過(guò)程程序設(shè)計(jì)使得結(jié)構(gòu)化程序設(shè)計(jì)的技術(shù)得以提升,現(xiàn)代的面向?qū)ο蟪绦蛟O(shè)計(jì)方法使得對(duì)設(shè)計(jì)模式的用途、契約式設(shè)計(jì)和建模語(yǔ)言(如UML)技術(shù)也得到了一定提升。


列位看官,當(dāng)您閱讀到這句話的時(shí)候,我就姑且認(rèn)為您已經(jīng)對(duì)面向?qū)ο笥辛艘粋€(gè)模糊的認(rèn)識(shí)了。那么,類和OOP有什么關(guān)系呢?

維基百科中這樣定義了類:

復(fù)制代碼 代碼如下:

在面向?qū)ο蟪淌皆O(shè)計(jì),類(class)是一種面向?qū)ο笥?jì)算機(jī)編程語(yǔ)言的構(gòu)造,是創(chuàng)建對(duì)象的藍(lán)圖,描述了所創(chuàng)建的對(duì)象共同的屬性和方法。
 
類的更嚴(yán)格的定義是由某種特定的元數(shù)據(jù)所組成的內(nèi)聚的包。它描述了一些對(duì)象的行為規(guī)則,而這些對(duì)象就被稱為該類的實(shí)例。類有接口和結(jié)構(gòu)。接口描述了如何通過(guò)方法與類及其實(shí)例互操作,而結(jié)構(gòu)描述了一個(gè)實(shí)例中數(shù)據(jù)如何劃分為多個(gè)屬性。類是與某個(gè)層的對(duì)象的最具體的類型。類還可以有運(yùn)行時(shí)表示形式(元對(duì)象),它為操作與類相關(guān)的元數(shù)據(jù)提供了運(yùn)行時(shí)支持。

支持類的編程語(yǔ)言在支持與類相關(guān)的各種特性方面都多多少少有一些微妙的差異。大多數(shù)都支持不同形式的類繼承。許多語(yǔ)言還支持提供封裝性的特性,比如訪問(wèn)修飾符。類的出現(xiàn),為面向?qū)ο缶幊痰娜齻€(gè)最重要的特性(封裝性,繼承性,多態(tài)性),提供了實(shí)現(xiàn)的手段。

看到這里,看官或許有一個(gè)認(rèn)識(shí),要OOP編程,就得用到類??梢赃@么說(shuō),雖然不是很嚴(yán)格。但是,反過(guò)來(lái)就不能說(shuō)了。不是說(shuō)用了類就一定是OOP。

編寫(xiě)類

對(duì)類的理解,需要看官有一定的抽象思維。因?yàn)轭悾–lass)本身所定義的是某事物的抽象特點(diǎn)。例如定義一個(gè)類:

復(fù)制代碼 代碼如下:

class Human:        #這是定義類的方法,通常類的名稱用首字母大寫(xiě)的單詞或者單詞拼接
    pass

 好,現(xiàn)在就從這里開(kāi)始,編寫(xiě)一個(gè)類,不過(guò)這次我們暫時(shí)不用python,而是用偽代碼,當(dāng)然,這個(gè)代碼跟python相去甚遠(yuǎn)。如下:

復(fù)制代碼 代碼如下:

class Human:
    四肢
    性格
    愛(ài)好
    學(xué)習(xí)()

 對(duì)象(Object)是類的實(shí)例。剛才已經(jīng)定義了一個(gè)名字為Human的類,從而定義了世界上所有的Human,但是這是一個(gè)抽象的Human,不是具體某個(gè)人。而對(duì)一個(gè)具體的人,他的四肢特點(diǎn)、性格、愛(ài)好等都是具體的,這些東西在這里被稱之為屬性。

下面就找一個(gè)具體的人:王二麻子,把上面的類實(shí)例化。
王二麻子 = Human()
王二麻子.四肢 = 修長(zhǎng)
王二麻子.愛(ài)好 = 看MM

 在這里,王二麻子就是Human這個(gè)類的一個(gè)實(shí)例。一個(gè)具體對(duì)象屬性的值被稱作它的“狀態(tài)”。(系統(tǒng)給對(duì)象分配內(nèi)存空間,而不會(huì)給類分配內(nèi)存空間,這很好理解,類是抽象的系統(tǒng)不可能給抽象的東西分配空間,對(duì)象是具體的)

行文至此,看官是不是大概對(duì)類有了一個(gè)模糊的認(rèn)識(shí)了呢?

鑒于類,距離我們的直觀感覺(jué)似乎有點(diǎn)遠(yuǎn)。所以,要慢慢道來(lái)。本講內(nèi)容不多,盼望看官能理解。

相關(guān)文章

  • python ansible服務(wù)及劇本編寫(xiě)

    python ansible服務(wù)及劇本編寫(xiě)

    python語(yǔ)言是運(yùn)維人員必會(huì)的語(yǔ)言,而ansible是一個(gè)基于Python開(kāi)發(fā)的自動(dòng)化運(yùn)維工具 (saltstack)。其功能實(shí)現(xiàn)基于SSH遠(yuǎn)程連接服務(wù);ansible可以實(shí)現(xiàn)批量系統(tǒng)配置、批量軟件部署、批量文件拷貝、批量運(yùn)行命令等功能
    2017-12-12
  • python?特有語(yǔ)法推導(dǎo)式的基本使用

    python?特有語(yǔ)法推導(dǎo)式的基本使用

    python中有一種特有的語(yǔ)法,就是推導(dǎo)式(又稱為解析式)。推導(dǎo)式是可以從一個(gè)數(shù)據(jù)序列構(gòu)建另一個(gè)新的數(shù)據(jù)序列的結(jié)構(gòu)體
    2022-03-03
  • python爬蟲(chóng)獲取多頁(yè)天涯帖子

    python爬蟲(chóng)獲取多頁(yè)天涯帖子

    本篇文章通過(guò)爬取多頁(yè)天涯帖子內(nèi)容來(lái)教給大家深入理解python爬蟲(chóng)相關(guān)知識(shí),有興趣的參考學(xué)習(xí)下。
    2018-02-02
  • Python如何加載模型并查看網(wǎng)絡(luò)

    Python如何加載模型并查看網(wǎng)絡(luò)

    這篇文章主要介紹了Python如何加載模型并查看網(wǎng)絡(luò),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • python統(tǒng)計(jì)RGB圖片某像素的個(gè)數(shù)案例

    python統(tǒng)計(jì)RGB圖片某像素的個(gè)數(shù)案例

    這篇文章主要介紹了python統(tǒng)計(jì)RGB圖片某像素的個(gè)數(shù)案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • python list元素為tuple時(shí)的排序方法

    python list元素為tuple時(shí)的排序方法

    下面小編就為大家分享一篇python list元素為tuple時(shí)的排序方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Pythonic版二分查找實(shí)現(xiàn)過(guò)程原理解析

    Pythonic版二分查找實(shí)現(xiàn)過(guò)程原理解析

    這篇文章主要介紹了Pythonic版二分查找實(shí)現(xiàn)過(guò)程原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Python記錄詳細(xì)調(diào)用堆棧日志的方法

    Python記錄詳細(xì)調(diào)用堆棧日志的方法

    這篇文章主要介紹了Python記錄詳細(xì)調(diào)用堆棧日志的方法,涉及Python調(diào)用堆棧日志的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-05-05
  • Python詳解文字轉(zhuǎn)語(yǔ)音的實(shí)現(xiàn)

    Python詳解文字轉(zhuǎn)語(yǔ)音的實(shí)現(xiàn)

    在自然語(yǔ)言處理上,文字、音頻互轉(zhuǎn)是一個(gè)很關(guān)鍵的技術(shù)點(diǎn)。對(duì)于語(yǔ)音轉(zhuǎn)文字,個(gè)人實(shí)現(xiàn)較為困難,我們可以使用語(yǔ)音轉(zhuǎn)文字的軟件或借助各API(如科大訊飛等)進(jìn)行移植開(kāi)發(fā)。不過(guò)文字轉(zhuǎn)語(yǔ)音就相對(duì)而言容易實(shí)現(xiàn)很多了
    2022-02-02
  • Python實(shí)現(xiàn)的多叉樹(shù)尋找最短路徑算法示例

    Python實(shí)現(xiàn)的多叉樹(shù)尋找最短路徑算法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的多叉樹(shù)尋找最短路徑算法,結(jié)合實(shí)例形式分析了Python使用深度優(yōu)先查找獲取多叉樹(shù)最短路徑相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07

最新評(píng)論

邛崃市| 门头沟区| 阿尔山市| 三台县| 丹东市| 正宁县| 若羌县| 巴彦县| 从化市| 玛沁县| 三江| 高淳县| 赞皇县| 双辽市| 山东省| 德庆县| 涞源县| 无锡市| 梧州市| 斗六市| 桦川县| 淳安县| 巴楚县| 高邑县| 南漳县| 万山特区| 江西省| 两当县| 阳山县| 阿尔山市| 多伦县| 东宁县| 蒲城县| 襄城县| 元谋县| 罗江县| 彰化市| 阿图什市| 竹溪县| 彭山县| 得荣县|