單純的理解“python中的函數(shù)是一等公民”這句話,可能包含幾層意思:
成都創(chuàng)新互聯(lián)2013年至今,先為魚峰等服務(wù)建站,魚峰等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為魚峰企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
正確的理解是:第1點和第2點,不包含第3點的意思。
python中的函數(shù)是一等公民,重點想表述的是: 在python世界人人平等 。
人人平等的世界,至少應(yīng)該包含兩層意思:1. 身份地位平等; 2. 行使的權(quán)利平等。
打印結(jié)果是:
從上面的打印結(jié)果中可以看出:
1.Python 程序中的所有數(shù)據(jù)都是某個類的實例,因而是一個對象;
2.類本身也是一個對象。int, float, str, list, dict, set, fuction, module, NoneType, object, type等,這些類都是type類的實例,也是一個對象;
3.object類是所有類的基類
4.object是頂級父類
函數(shù)function和其他公民一樣,他們的都有一個共同的身份:對象 。
在c++和java里,數(shù)據(jù)是數(shù)據(jù),動作是動作,他倆的結(jié)合是類(class)。對于python,數(shù)據(jù)是數(shù)據(jù),動作也可以是數(shù)據(jù),這個牛逼的數(shù)據(jù)叫做對象object。
對于函數(shù)function來講,既可以安靜的做一個數(shù)據(jù),又可以優(yōu)雅的執(zhí)行動作。
Python 官方文檔里這樣解釋 對象(object) 的含義:Python 中的對象是對數(shù)據(jù)的抽象,Python 程序中所有數(shù)據(jù)都是由對象或者對象間的關(guān)系來表示的。每個對象都有各自的編號、類型和值。
兩個祖先(a和b)占了相鄰的兩塊內(nèi)存,一個可以與它的“后代”共用內(nèi)存,一個卻只能讓“后代”另立門戶;當(dāng)它們走完自己的生命周期后,b會馬上被當(dāng)垃圾回收,內(nèi)存地址遺產(chǎn)被剝奪,然而a卻形滅而實存,蔭庇后世。
Python為這些對象傾斜資源,也就是為某種階層固化提供了合法性。劃分的依據(jù)是因為它們比較常用,共用內(nèi)存就意味著減少開支,提高內(nèi)存使用效率。
這就是Python有趣的地方了,一面是全體公民,一面是特權(quán)種族,組成了看似矛盾的二元對立結(jié)構(gòu)。
參考:
class A(object):
def some_method(self):
pass
class B(A):
def some_other_method(self):
super(B,self).some_method()
pass
類(Class): 用來描述具有相同的屬性和方法的對象的集合。
類變量:類變量在整個實例化的對象中是公用的。類變量定義在類中且在函數(shù)體之外。類變量通常不作為實例變量使用。
類有一個名為 __init__() 的特殊方法(構(gòu)造方法),該方法在類實例化時會自動調(diào)用
self:self 代表的是類的實例,代表當(dāng)前對象的地址,而 self.class 則指向類。
類調(diào)用 Car.weight
實例化 car01=Car(5)
實例對象調(diào)用 car01.weght
我們在構(gòu)造類時,Python3默認(rèn)我們繼承了object這個基類,我個人理解object就是個空的類,可以不用管為何要在括號中寫上object,這是Python3的特性,在python2中如果你沒有寫object的話不會默認(rèn)繼承了object這個基類。
同樣的我們自己希望繼承的父類只需要把objetc改為我們自己定義的類名即可。子類中可以擁有父類中所有的公有屬性和方法,但是可以通過在變量名前加下劃線使其變?yōu)樗接?,這樣子類就不可以訪問父類中的成員了。
以下三個公交車類的父類均為客車類,我們可以寫一個funcs方法使得每次調(diào)用funcs方法時,傳入不同的對象以執(zhí)行不同的func方法,具體實現(xiàn)如下:
主函數(shù) :
可以看到,我將小 汽車 實例化為帶有重量為5t的一個具體對象,將客車實例化為帶有重量為20t的一個具體對象,將三個公交車實例化為帶有重量為15t的一個具體對象.
如上圖所示,我每次在調(diào)用funcs方法時都傳入了一個實例化對象,funcs根據(jù)不同的對象執(zhí)行相應(yīng)的內(nèi)部方法。