Python面向?qū)ο缶幊倘腴T指南
在計(jì)算機(jī)編程的世界里,編程技術(shù)已經(jīng)從簡(jiǎn)單的流程控制指令序列進(jìn)化為更有組織的方式。首先是結(jié)構(gòu)化的過(guò)程性編程,它可以讓我們將程序劃分為邏輯塊以便于重用或復(fù)用。然而,面向?qū)ο缶幊虅t進(jìn)一步增強(qiáng)了結(jié)構(gòu)化編程,實(shí)
在計(jì)算機(jī)編程的世界里,編程技術(shù)已經(jīng)從簡(jiǎn)單的流程控制指令序列進(jìn)化為更有組織的方式。首先是結(jié)構(gòu)化的過(guò)程性編程,它可以讓我們將程序劃分為邏輯塊以便于重用或復(fù)用。然而,面向?qū)ο缶幊虅t進(jìn)一步增強(qiáng)了結(jié)構(gòu)化編程,實(shí)現(xiàn)了數(shù)據(jù)和動(dòng)作的融合,將數(shù)據(jù)層和邏輯層描述成一個(gè)可以創(chuàng)建這些對(duì)象的簡(jiǎn)單抽象層。下面我們將詳細(xì)介紹面向?qū)ο缶幊痰膶傩院蛣?chuàng)建過(guò)程。
常用術(shù)語(yǔ)
首先,讓我們來(lái)了解一下面向?qū)ο缶幊痰某S眯g(shù)語(yǔ):
1. 抽象/實(shí)現(xiàn):抽象指的是對(duì)現(xiàn)實(shí)世界問(wèn)題和實(shí)體的本質(zhì)表現(xiàn)、行為和特征建模,建立一個(gè)相關(guān)的子集,可以用于描繪程序結(jié)構(gòu),從而實(shí)現(xiàn)這種模型。
2. 封裝/接口:封裝描述了對(duì)數(shù)據(jù)/信息進(jìn)行隱藏的觀念,它對(duì)數(shù)據(jù)屬性提供接口和訪問(wèn)函數(shù),在設(shè)計(jì)時(shí)對(duì)數(shù)據(jù)提供相應(yīng)的接口就可以了。
3. 合成:合成擴(kuò)充了對(duì)類的描述,使得多個(gè)不同的類合成為一個(gè)大的類,來(lái)解決現(xiàn)實(shí)問(wèn)題。
4. 派生/繼承:派生描述了子類的創(chuàng)建,新類保留已存在類類型中所有需要的數(shù)據(jù)和行為,但允許修改或者其它自定義操作,都不會(huì)修改原類的定義。
5. 多態(tài):指出了對(duì)象如何通過(guò)它們共同的屬性和動(dòng)作來(lái)操作及訪問(wèn),而不必考慮它們具體的類。
6. 泛化/特化:泛化表示所有子類與其父類及祖先類有一樣的特點(diǎn);特化描述所有子類的自定義,也就是什么屬性讓它與祖先類不同。
7. 自省/反射:自省表示給予程序員某種能力來(lái)進(jìn)行像“手工類型檢測(cè)”工作,它也被稱為反射。這個(gè)性質(zhì)展示了某對(duì)象是如何在運(yùn)行期取得自身信息。
創(chuàng)建類
類是一種數(shù)據(jù)結(jié)構(gòu),我們可以用它來(lái)定義對(duì)象,對(duì)象將數(shù)據(jù)值和行為特性融合到一起。在Python中,使用class關(guān)鍵字來(lái)創(chuàng)建類。通常,我們要將類名的第一個(gè)字母大寫,以便區(qū)分其他變量和函數(shù)。
數(shù)據(jù)屬性
數(shù)據(jù)屬性僅僅是所定義的類的變量。這種屬性已是靜態(tài)變量,或者是靜態(tài)數(shù)據(jù),它們表示這些數(shù)據(jù)是與它們所屬的類對(duì)象綁定的,不依賴于任何類實(shí)例。靜態(tài)成員通常僅用來(lái)跟蹤與類相關(guān)的值。
創(chuàng)建實(shí)例
如果說(shuō)類是一種數(shù)據(jù)結(jié)構(gòu)定義類型,那么實(shí)例則聲明了一個(gè)這種類型的變量。類被實(shí)例化得到實(shí)例,該實(shí)例的類型就是這個(gè)被實(shí)例化的類。創(chuàng)建實(shí)例非常類似于調(diào)用函數(shù),調(diào)用一個(gè)類就創(chuàng)建了它的一個(gè)實(shí)例。
實(shí)例屬性
實(shí)例僅擁有數(shù)據(jù)屬性,數(shù)據(jù)屬性只是與某個(gè)類的實(shí)例相關(guān)聯(lián)的數(shù)據(jù)值,并且可通過(guò)句點(diǎn)屬性標(biāo)識(shí)法來(lái)訪問(wèn)。設(shè)置實(shí)例的屬性可以在實(shí)例創(chuàng)建后任意時(shí)間進(jìn)行,也可以在能夠訪問(wèn)實(shí)例的代碼中進(jìn)行。
特殊的實(shí)例屬性
除了普通的實(shí)例屬性之外,Python還提供了幾個(gè)特殊的實(shí)例屬性:
1. __class__:實(shí)例化I的類。
2. __dict__:I的屬性。
類和實(shí)例屬性對(duì)比
類屬性僅是與類相關(guān)的數(shù)據(jù)值,類屬性和實(shí)例無(wú)關(guān)。靜態(tài)成員變量不會(huì)因?yàn)閷?shí)例而改變它們的值,除非實(shí)例中顯示改變它。類和實(shí)例都擁有名字空間,各自不相同。