2022-02-21

類(Class):用來描述具有相同的屬性和方法的對(duì)象的集合。它定義了該集合中每個(gè)對(duì)象所共有的屬性和方法洛姑。對(duì)象是類的實(shí)例凝颇。

類變量:類變量在整個(gè)實(shí)例化的對(duì)象中是公用的。類變量定義在類中且在函數(shù)體之外贪磺。類變量通常不作為實(shí)例變量使用。

數(shù)據(jù)成員:類變量或者實(shí)例變量, 用于處理類及其實(shí)例對(duì)象的相關(guān)的數(shù)據(jù)诅愚。

方法重寫:如果從父類繼承的方法不能滿足子類的需求寒锚,可以對(duì)其進(jìn)行改寫,這個(gè)過程叫方法的覆蓋(override)违孝,也稱為方法的重寫刹前。

局部變量:定義在方法中的變量,只作用于當(dāng)前實(shí)例的類雌桑。

實(shí)例變量:在類的聲明中喇喉,屬性是用變量來表示的。這種變量就稱為實(shí)例變量校坑,是在類聲明的內(nèi)部但是在類的其他成員方法之外聲明的拣技。

繼承:即一個(gè)派生類(derived class)繼承基類(base class)的字段和方法。繼承也允許把一個(gè)派生類的對(duì)象作為一個(gè)基類對(duì)象對(duì)待撒踪。

方法:類中定義的函數(shù)过咬。

對(duì)象:通過類定義的數(shù)據(jù)結(jié)構(gòu)實(shí)例。對(duì)象包括兩個(gè)數(shù)據(jù)成員(類變量和實(shí)例變量)和方法制妄。

創(chuàng)建類

使用 class 語句來創(chuàng)建一個(gè)新類,class 之后為類的名稱并以冒號(hào)結(jié)尾:

classClassName:'類的幫助信息'#類文檔字符串class_suite#類體

類的幫助信息可以通過ClassName.doc查看泵三。

class_suite 由類成員耕捞,方法,數(shù)據(jù)屬性組成烫幕。

self 代表類的實(shí)例俺抽,self 在定義類的方法時(shí)是必須有的,雖然在調(diào)用時(shí)不必傳入相應(yīng)的參數(shù)较曼。

self代表類的實(shí)例磷斧,而非類

類的方法與普通的函數(shù)只有一個(gè)特別的區(qū)別——它們必須有一個(gè)額外的第一個(gè)參數(shù)名稱, 按照慣例它的名稱是 self。

實(shí)例化類其他編程語言中一般用關(guān)鍵字 new,但是在 Python 中并沒有這個(gè)關(guān)鍵字弛饭,類的實(shí)例化類似函數(shù)調(diào)用方式冕末。

以下使用類的名稱 Employee 來實(shí)例化,并通過init方法接收參數(shù)侣颂。

訪問屬性

getattr(obj, name[, default]) : 訪問對(duì)象的屬性档桃。

hasattr(obj,name) : 檢查是否存在一個(gè)屬性。

setattr(obj,name,value) : 設(shè)置一個(gè)屬性憔晒。如果屬性不存在藻肄,會(huì)創(chuàng)建一個(gè)新屬性。

delattr(obj, name) : 刪除屬性拒担。

dict: 類的屬性(包含一個(gè)字典嘹屯,由類的數(shù)據(jù)屬性組成)

doc:類的文檔字符串

name: 類名

module: 類定義所在的模塊(類的全名是'main.className',如果類位于一個(gè)導(dǎo)入模塊mymod中从撼,那么className.module等于 mymod)

bases: 類的所有父類構(gòu)成元素(包含了一個(gè)由所有父類組成的元組)

python對(duì)象銷毀(垃圾回收)

Python 使用了引用計(jì)數(shù)這一簡單技術(shù)來跟蹤和回收垃圾抚垄。

在 Python 內(nèi)部記錄著所有使用中的對(duì)象各有多少引用。

一個(gè)內(nèi)部跟蹤變量谋逻,稱為一個(gè)引用計(jì)數(shù)器呆馁。

當(dāng)對(duì)象被創(chuàng)建時(shí), 就創(chuàng)建了一個(gè)引用計(jì)數(shù)毁兆, 當(dāng)這個(gè)對(duì)象不再需要時(shí)浙滤, 也就是說, 這個(gè)對(duì)象的引用計(jì)數(shù)變?yōu)? 時(shí)气堕, 它被垃圾回收纺腊。但是回收不是"立即"的, 由解釋器在適當(dāng)?shù)臅r(shí)機(jī)茎芭,將垃圾對(duì)象占用的內(nèi)存空間回收揖膜。

垃圾回收機(jī)制不僅針對(duì)引用計(jì)數(shù)為0的對(duì)象,同樣也可以處理循環(huán)引用的情況梅桩。循環(huán)引用指的是壹粟,兩個(gè)對(duì)象相互引用,但是沒有其他變量引用他們宿百。這種情況下趁仙,僅使用引用計(jì)數(shù)是不夠的。Python 的垃圾收集器實(shí)際上是一個(gè)引用計(jì)數(shù)器和一個(gè)循環(huán)垃圾收集器

類的繼承

面向?qū)ο蟮木幊處淼闹饕锰幹皇谴a的重用垦页,實(shí)現(xiàn)這種重用的方法之一是通過繼承機(jī)制雀费。

繼承語法

class派生類名(基類名)...

在python中繼承中的一些特點(diǎn):

1、如果在子類中需要父類的構(gòu)造方法就需要顯式的調(diào)用父類的構(gòu)造方法痊焊,或者不重寫父類的構(gòu)造方法盏袄。詳細(xì)說明可查看: python 子類繼承父類構(gòu)造函數(shù)說明忿峻。

2、在調(diào)用基類的方法時(shí)辕羽,需要加上基類的類名前綴逛尚,且需要帶上 self 參數(shù)變量。區(qū)別在于類中調(diào)用普通函數(shù)時(shí)并不需要帶上 self 參數(shù)

3逛漫、Python 總是首先查找對(duì)應(yīng)類型的方法黑低,如果它不能在派生類中找到對(duì)應(yīng)的方法,它才開始到基類中逐個(gè)查找酌毡。(先在本類中查找調(diào)用的方法克握,找不到才去基類中找)。

如果在繼承元組中列了一個(gè)以上的類枷踏,那么它就被稱作"多重繼承" 菩暗。

派生類的聲明,與他們的父類類似旭蠕,繼承的基類列表跟在類名之后停团,如下所示:

classSubClassName(ParentClass1[,ParentClass2,...]):...

你可以繼承多個(gè)類

方法重寫

如果父類方法的功能不能滿足需求可以在子類重寫你父類的方法:

基礎(chǔ)重載方法

下表列出了一些通用的功能,你可以在自己的類重寫:

序號(hào)方法, 描述 & 簡單的調(diào)用

1init ( self [,args...] )構(gòu)造函數(shù) 簡單的調(diào)用方法:obj = className(args)

2del( self )析構(gòu)方法, 刪除一個(gè)對(duì)象 簡單的調(diào)用方法 :del obj

3repr( self )轉(zhuǎn)化為供解釋器讀取的形式 簡單的調(diào)用方法 :repr(obj)

4str( self )用于將值轉(zhuǎn)化為適于人閱讀的形式 簡單的調(diào)用方法 :str(obj)

5cmp ( self, x )對(duì)象比較 簡單的調(diào)用方法 :cmp(obj, x)

運(yùn)算符重載

類屬性與方法

類的私有屬性

__private_attrs:兩個(gè)下劃線開頭掏熬,聲明該屬性為私有佑稠,不能在類的外部被使用或直接訪問。在類內(nèi)部的方法中使用時(shí)self.__private_attrs旗芬。

類的方法

在類的內(nèi)部舌胶,使用def關(guān)鍵字可以為類定義一個(gè)方法,與一般函數(shù)定義不同疮丛,類方法必須包含參數(shù) self,且為第一個(gè)參數(shù)

類的私有方法

__private_method:兩個(gè)下劃線開頭幔嫂,聲明該方法為私有方法,不能在類的外部調(diào)用誊薄。在類的內(nèi)部調(diào)用self.__private_methods

實(shí)例


foo: 定義的是特殊方法履恩,一般是系統(tǒng)定義名字?

_foo: 以單下劃線開頭的表示的是 protected 類型的變量,

__foo: 雙下劃線的表示的是私有類型(private)的變量, 只能是允許這個(gè)類本身進(jìn)行訪問了呢蔫。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末切心,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子咐刨,更是在濱河造成了極大的恐慌昙衅,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件定鸟,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡著瓶,警方通過查閱死者的電腦和手機(jī)联予,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人沸久,你說我怎么就攤上這事季眷。” “怎么了卷胯?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵子刮,是天一觀的道長。 經(jīng)常有香客問我窑睁,道長挺峡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任担钮,我火速辦了婚禮橱赠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘箫津。我一直安慰自己狭姨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布苏遥。 她就那樣靜靜地躺著饼拍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪田炭。 梳的紋絲不亂的頭發(fā)上师抄,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音诫肠,去河邊找鬼司澎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛栋豫,可吹牛的內(nèi)容都是我干的挤安。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼丧鸯,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蛤铜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起丛肢,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤围肥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蜂怎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體穆刻,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年杠步,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了氢伟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片榜轿。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖朵锣,靈堂內(nèi)的尸體忽然破棺而出谬盐,到底是詐尸還是另有隱情,我是刑警寧澤诚些,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布飞傀,位于F島的核電站,受9級(jí)特大地震影響诬烹,放射性物質(zhì)發(fā)生泄漏砸烦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一椅您、第九天 我趴在偏房一處隱蔽的房頂上張望外冀。 院中可真熱鬧,春花似錦掀泳、人聲如沸雪隧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脑沿。三九已至,卻和暖如春马僻,著一層夾襖步出監(jiān)牢的瞬間庄拇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工韭邓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留措近,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓女淑,卻偏偏與公主長得像瞭郑,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鸭你,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Python 面向?qū)ο?創(chuàng)建類:用class語句來創(chuàng)建一個(gè)新類屈张,class之后為類的名稱并以冒號(hào)結(jié)尾 class ...
    wen_b182閱讀 196評(píng)論 0 0
  • 棧幀是棧里面存儲(chǔ)的基本單位 一個(gè)線程對(duì)應(yīng)一個(gè)虛擬機(jī)棧 一個(gè)虛擬機(jī)棧中有很多棧幀 一個(gè)棧幀對(duì)應(yīng)一個(gè)方法 棧幀里面有局...
    eden_0e6c閱讀 181評(píng)論 0 0
  • mysql數(shù)據(jù)庫基礎(chǔ)知識(shí)總結(jié) 推薦一套java[https://link.zhihu.com/?target=ht...
    傲嬌才不會(huì)的閱讀 100評(píng)論 0 0
  • 一、CSS的三大特性 1.層疊性 如果利用相同的選擇器設(shè)置相同的屬性樣式袱巨,就會(huì)發(fā)生層疊(覆蓋)阁谆。比如下面這樣的定義...
    Xrikis閱讀 271評(píng)論 0 0
  • 了不起的心理學(xué) 讀懂人心:科學(xué)的讀心法則 自我圖式 定義:在以往的經(jīng)驗(yàn)基礎(chǔ)上,對(duì)自己形成的一些概括性的認(rèn)識(shí)愉老。 特點(diǎn)...
    lomidely閱讀 812評(píng)論 0 0