竟然面向?qū)ο蟠婧停蔷图词共粫?huì)面向?qū)ο笠惨M量面向?qū)ο?br> 今天小寫(xiě)一會(huì)python奕剃,總結(jié)這么一點(diǎn)點(diǎn)。
class classA:
publicCnt=0;#public全局變量 # @ 20161101今天知道了捐腿,也就是static才在這里定義纵朋,非共享的直接self.var就可以了
__privateCnt=0;#前面兩個(gè)橫杠就private變量了
__name="";
#需要注意的是,在Python中茄袖,變量名類(lèi)似__xxx__的倡蝙,
#也就是以雙下劃線開(kāi)頭,并且以雙下劃線結(jié)尾的绞佩,是特殊變量,
#特殊變量是可以直接訪問(wèn)的猪钮,不是private變量品山,所以,不能用__name__烤低、__score__這樣的變量名
def __init__(self,nameTmp):#默認(rèn)的構(gòu)建函數(shù)就是這個(gè)名字肘交,函數(shù)前面加雙杠也代表私有
self.__class__.publicCnt +=1;###快來(lái)看啊,加了__class__訪問(wèn)扑馁,這個(gè)全局變量立馬就變成static變量了涯呻,成為這個(gè)類(lèi)共享的
self.__privateCnt +=1;###不加__class__就是普通全局變量了,只屬于這個(gè)對(duì)象的
self.__name=nameTmp;
print('init publicCnt',self.__name,self.publicCnt);
print('init privateCnt',self.__name,self.__privateCnt);
def __del__(self):#默認(rèn)的析構(gòu)函數(shù)就是這個(gè)名字
self.__class__.publicCnt -=1;
self.__privateCnt -=1;
print('del publicCnt',self.__name,self.publicCnt);
print('del privateCnt',self.__name,self.__privateCnt);
def function(self):
print('just a function');
if __name__=='__main__':
a=classA('a');
b=classA('b');
c=classA('c');
d=classA('d');
e=classA('e');
看了下輸出順序腻要,不是很懂它的析構(gòu)順序怎樣复罐,
據(jù)說(shuō)是字典順序A-Za-z,但這個(gè)看著明顯不像雄家,
其實(shí)就是還不知道是什么字典順序效诅。
init publicCnt a 1
init privateCnt a 1
init publicCnt b 2
init privateCnt b 1
init publicCnt c 3
init privateCnt c 1
init publicCnt d 4
init privateCnt d 1
init publicCnt e 5
init privateCnt e 1
del publicCnt b 4
del privateCnt b 0
del publicCnt d 3
del privateCnt d 0
del publicCnt e 2
del privateCnt e 0
del publicCnt c 1
del privateCnt c 0
del publicCnt a 0
del privateCnt a 0