日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

python中定义类

發(fā)布時(shí)間:2025/5/22 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中定义类 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

3.2. 定義類

Python是完全面向?qū)ο蟮?#xff1a;可以定義自已的類,從自已的或內(nèi)置類進(jìn)行繼承,然后對(duì)生成的類進(jìn)行實(shí)例化。

在Python中定義類很簡(jiǎn)單;就象定義函數(shù),沒有獨(dú)立的定義接口。只要定義類,然后編碼就可以了。Python類以保留字 class 開始,跟著是類的名字。從技術(shù)上說(shuō),有這些就足夠了,因?yàn)橐粋€(gè)類不需要從任何其它類繼承而來(lái)。

例 3.3. 最簡(jiǎn)單的Python類

class foo: pass
這個(gè)類的名字是 foo,它沒有從任何其它的類繼承而來(lái)。

這個(gè)類沒有定義任何方法或?qū)傩?#xff0c;但是從語(yǔ)法上,需要在定義中有些東西,所以我們使用了 pass。這是一個(gè)Python保留字,僅僅表示“向前走,不要往這看”。它相當(dāng)于C++中的大括號(hào)空集({})或者是Java中的單個(gè)分號(hào)。它是一條什么都不做的語(yǔ)句,當(dāng)你刪除函數(shù)或類時(shí),它是一個(gè)很好的占位符。

你可能猜到了,在類中的每條語(yǔ)句都是縮排的,就象函數(shù)內(nèi)的代碼, if 語(yǔ)句, for 循環(huán),等等。第一條不縮近的語(yǔ)句不屬于這個(gè)類。

當(dāng)然,實(shí)際上大多數(shù)的類將從其它的類繼承來(lái)的,并且它們將定義自已的類方法和屬性。但是如你所見,除了名字以外,沒有什么東西是一個(gè)類必須擁有的。特別是,C++程序員可能會(huì)感到奇怪,Python的類沒有明確的構(gòu)造器和析構(gòu)器。Python類的確存在同一個(gè)構(gòu)造器相似的東西: __init__ 方法。

例 3.4. 定義 FileInfo 類

from UserDict import UserDict class FileInfo(UserDict): "store file metadata" def __init__(self, filename=None): UserDict.__init__(self) self["name"] = filename

類的祖先被列在立即跟在類名字后面的小括號(hào)里。所以 FileInfo 類是從 UserDict 類(這個(gè)類從 UserDict 中導(dǎo)入)繼承而來(lái)。UserDict 是一個(gè)象字典一樣動(dòng)作的類,它允許你完全子類化字典數(shù)據(jù)類型,同時(shí)增加你自已的行為。(也存在相似的類 UserList 和 UserString ,它們?cè)试S你子類化列表和字符串。)在這個(gè)類的背后有一些“巫術(shù)”,我們將在本章的后面,隨著更進(jìn)一步地研究 UserDict 類,揭開這些秘密。

類也可以有文檔字符串,就象模塊和函數(shù)。

__init__ 在類的實(shí)例創(chuàng)建后立即被調(diào)用。它可能會(huì)誘使你,但是不正確地,叫它為類的構(gòu)造器。說(shuō)它誘使,是因?yàn)樗瓷先ハ髽?gòu)造器(按照習(xí)慣, __init__ 是類中第一個(gè)定義的方法),象構(gòu)造器一樣動(dòng)作(在一個(gè)新創(chuàng)建的類實(shí)例中,它是首先被執(zhí)行的代碼),并且聽起來(lái)也象構(gòu)造器(“init”當(dāng)然意味著構(gòu)造的本性)。說(shuō)它不正確,是因?yàn)閷?duì)象在 __init__ 被調(diào)用的時(shí)刻已經(jīng)被構(gòu)造出來(lái)了,你已經(jīng)有了對(duì)類的新實(shí)例一個(gè)有效的引用。

每一個(gè)類方法的第一個(gè)參數(shù),包括 __init__,總是指向類的當(dāng)前實(shí)例的一個(gè)引用。按照習(xí)慣這個(gè)參數(shù)被命名為 self。(除了 self 不要把它命名為別的東西,這是一個(gè)非常強(qiáng)烈的習(xí)慣。) self 象C++中的保留字 this。在 __init__ 方法中, self 指向新創(chuàng)建的對(duì)象;在其它的方法中,它指向方法被調(diào)用的對(duì)象。

__init__ 方法可以接受任意個(gè)數(shù)的參數(shù),就象函數(shù)一樣,參數(shù)可以用缺省值定義,可以設(shè)置成對(duì)于調(diào)用者可選。在本例中, name 有一個(gè)缺省值 None,即Python的空值。

一些偽面向?qū)ο笳Z(yǔ)言,象Powerbuilder有一種“擴(kuò)展”構(gòu)造器和其它事件的概念,即父類的方法在子類的方法執(zhí)行前被自動(dòng)調(diào)用。Python不這樣做,你必須總是顯示調(diào)用在父類中適合的方法。同樣,當(dāng)調(diào)用父類方法時(shí),你必須包含 self 參數(shù),跟著類方法所接受的任何其它類型。在本例中,我們沒有使用參數(shù)(除了 self)調(diào)用 UserDict 類的 __init__ 方法。

我對(duì)你說(shuō)過(guò),這個(gè)類的象字典一樣動(dòng)作,那么這里就是第一個(gè)印象。我們將參數(shù) filename 賦值給對(duì)象 name 關(guān)鍵字,作為它的值。

注意 __init__ 方法從不返回一個(gè)值。

噢。我知道有很多知識(shí)需要吸收,但是你要掌握它。所有的Python類以相同的方式工作,所以一旦你學(xué)會(huì)了一個(gè),就是學(xué)會(huì)了全部。再加上,在Python社區(qū)中有強(qiáng)烈的習(xí)慣,對(duì)于每個(gè)類方法的第一個(gè)參數(shù)都命名為“self”,所以你不會(huì)浪費(fèi)大量時(shí)間去習(xí)慣他人的風(fēng)格。如果你忘了別的任何事,也要記住這件事,因?yàn)槲艺J(rèn)定它會(huì)讓你出錯(cuò):

__init__ 方法是可選的,但是一旦你定義了一個(gè),就必須記得顯示調(diào)用父類的 __init__ 方法。這樣更是正確的:何時(shí)一個(gè)子類想擴(kuò)展父類的行為,后代方法必須在適當(dāng)?shù)臅r(shí)機(jī),使用適當(dāng)?shù)膮?shù),顯式調(diào)用父類方法。

轉(zhuǎn)載于:https://www.cnblogs.com/starspace/archive/2008/12/11/1353231.html

總結(jié)

以上是生活随笔為你收集整理的python中定义类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。