由python的對象展開來談?wù)刾ython的高級特性

一切皆是對象

在python的世界中,一切都是對象,感覺python的作者是懷著一種"終生平等"的思想來創(chuàng)作python語言,所以在python中不論函數(shù)、類、變量等都是對象。

對象差異

雖然大家都叫對象,但是每種對象之間都是有差異的,你不能說函數(shù)和類就是一樣的,那也就沒有創(chuàng)作它們的意義了。在python的世界中是允許各對象之間的內(nèi)在存在差異。就好像在這個地球上,有70億人口,但是按照膚色還是分成了黃種人、白種人、黑人。

賦予對象的能力

既然創(chuàng)造出了不同的對象,那么就應(yīng)該給每種對象一點特色來做區(qū)分,所以每種對象都應(yīng)該有其獨特的操作方法。下面我們著重談?wù)勵悓ο蟮奶厣?/p>

類對象的十八般基本功--內(nèi)置方法

類這個對象在python世界中是一種結(jié)構(gòu)較為精密復(fù)雜,作用最強大的一類對象。自然身懷絕技,它身上有十八般基本功如下(指17種內(nèi)置方法,也稱魔術(shù)方法、特殊方法)

1.__init__(self,...)     初始化對象,在創(chuàng)建新對象時調(diào)用
2.__del__(self)  釋放對象,在對象被刪除之前調(diào)用
3.__new__(cls,*args,**kwd)   實例的生成操作
4.__str__(self)  在使用print語句時被調(diào)用
5.__getitem__(self,key)  獲取序列的索引key對應(yīng)的值,等價于seq[key]
6.__len__(self)  在調(diào)用內(nèi)聯(lián)函數(shù)len()時被調(diào)用
7.__cmp__(stc,dst)   比較兩個對象src和dst
8.__getattr__(s,name)    獲取屬性的值
9.__setattr__(s,name,value)  設(shè)置屬性的值
10.__delattr__(s,name)   刪除name屬性
11.__getattribute__()    __getattribute__()功能與__getattr__()類似
12.__gt__(self,other)    判斷self對象是否大于other對象13.__lt__(slef,other)    判斷self對象是否小于other對象
14.__ge__(slef,other)    判斷self對象是否大于或者等于other對象
15.__le__(slef,other)    判斷self對象是否小于或者等于other對象
16.__eq__(slef,other)    判斷self對象是否等于other對象
17.__call__(self,*args)  把實例對象作為函數(shù)調(diào)用
類對象的吸星大法之靜態(tài)方法

靜態(tài)方法實際上就是普通函數(shù),定義形式是在def行前加修飾符@staticmethod,只是由于某種原因需要定義在類里面。靜態(tài)方法的參數(shù)可以根據(jù)需要定義,不需要特殊的self參數(shù)??梢酝ㄟ^類名或者值為實例對象的變量,以屬性引用的方式調(diào)用靜態(tài)方法(有點像修飾符的使用)。與所在的類本身沒有多大關(guān)系。比如一個文件中有一個函數(shù)和一個類,二者沒啥關(guān)系,但是如果想把這個函數(shù)合并到這個類中怎么做,就用靜態(tài)方法。

類對象的斗轉(zhuǎn)星移之類方法

@classmethod 很大的作用在于初始化類時,數(shù)據(jù)結(jié)構(gòu)不符合期望,可以添加額外的處理函數(shù),然后返回一個初始化后的類,做了一些轉(zhuǎn)化再輸出。可以看出,類方法與靜態(tài)方法的區(qū)別就是類方法和自身所在類有關(guān)系,為自身服務(wù)的。而靜態(tài)方法與類本身沒有多大關(guān)系,純粹是被強制吸納進來的
使用方法見(https://blog.csdn.net/u011510825/article/details/78865325)

類對象的任督二脈--修飾符@property

我們知道,在武俠世界中,能否成為高手,打通任督二脈至關(guān)重要,任督二脈一旦打通,真氣即可逆行,游走全身,武功突飛猛進。類的任督二脈在哪里的呢,就在屬性和方法這二脈上,如果可以像調(diào)用屬性一樣調(diào)用方法,那么類的任督二脈就算是打通了。所以,property就是打通任督二脈的關(guān)鍵法門,在方法上加上@property之后,就可以像調(diào)用屬性一樣調(diào)用方法。使用@property方法參考廖雪峰老師的博客
(https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386820062641f3bcc60a4b164f8d91df476445697b9e000)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 包(lib)、模塊(module) 在Python中,存在包和模塊兩個常見概念。 模塊:編寫Python代碼的py...
    清清子衿木子水心閱讀 3,912評論 0 27
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,666評論 1 32
  • 函數(shù)和對象 1、函數(shù) 1.1 函數(shù)概述 函數(shù)對于任何一門語言來說都是核心的概念。通過函數(shù)可以封裝任意多條語句,而且...
    道無虛閱讀 4,950評論 0 5
  • 在家的這幾天里,中午和晚上吃飯的空擋,就看抗日劇。主要是因為父親非常地喜歡看,所以自己也慢慢著迷上了。 無論是我黨...
    梅勝閱讀 1,075評論 0 6
  • 在語文課程的內(nèi)容設(shè)計上,教師要挖掘語言文字中所蘊含的本體文化(漢字、漢語、修辭等方面所體現(xiàn)出的文化)和民族傳統(tǒng)文化...
    雪松_d0e3閱讀 156評論 0 2

友情鏈接更多精彩內(nèi)容