python基礎(chǔ)——特性

property特性

不能賦值,隱藏執(zhí)行一段代碼

class Foo:
    def __init__(self,val):
        self.__NAME=val #將所有的數(shù)據(jù)屬性都隱藏起來(lái)

    @property
    def name(self):
        return self.__NAME #obj.name訪問(wèn)的是self.__NAME(這也是真實(shí)值的存放位置)

    @name.setter
    def name(self,value):
        if not isinstance(value,str):  #在設(shè)定值之前進(jìn)行類(lèi)型檢查
            raise TypeError('%s must be str' %value)
        self.__NAME=value #通過(guò)類(lèi)型檢查后,將值value存放到真實(shí)的位置self.__NAME

    @name.deleter
    def name(self):
        raise TypeError('Can not delete')

f=Foo('egon')
print(f.name)
# f.name=10 #拋出異常'TypeError: 10 must be str'
del f.name #拋出異常'TypeError: Can not delete'

staticmethod 靜態(tài)方法

class Date:
    def __init__(self,year,month,day):
        self.year=year
        self.month=month
        self.day=day
    @staticmethod
    def now(): #用Date.now()的形式去產(chǎn)生實(shí)例,該實(shí)例用的是當(dāng)前時(shí)間
        t=time.localtime() #獲取結(jié)構(gòu)化的時(shí)間格式
        return Date(t.tm_year,t.tm_mon,t.tm_mday) #新建實(shí)例并且返回
    @staticmethod
    def tomorrow():#用Date.tomorrow()的形式去產(chǎn)生實(shí)例,該實(shí)例用的是明天的時(shí)間
        t=time.localtime(time.time()+86400)
        return Date(t.tm_year,t.tm_mon,t.tm_mday)
    
a=Date('1987',11,27) #自己定義時(shí)間
b=Date.now() #采用當(dāng)前時(shí)間
c=Date.tomorrow() #采用明天的時(shí)間

print(a.year,a.month,a.day)
print(b.year,b.month,b.day)
print(c.year,c.month,c.day)

靜態(tài)方法本身可以作為一個(gè)函數(shù)提供給類(lèi),作為不同的初始化實(shí)例的方式

classmethod 類(lèi)方法

import time
class Date:
    def __init__(self,year,month,day):
        self.year=year
        self.month=month
        self.day=day
    @staticmethod
    def now():
        t=time.localtime()
        return Date(t.tm_year,t.tm_mon,t.tm_mday)

class EuroDate(Date):
    def __str__(self):
        return 'year:%s month:%s day:%s' %(self.year,self.month,self.day)

e=EuroDate.now()
print(e) #我們的意圖是想觸發(fā)EuroDate.__str__,但是結(jié)果為
'''
輸出結(jié)果:
<__main__.Date object at 0x1013f9d68>
'''

因?yàn)閑就是用Date類(lèi)產(chǎn)生的,所以根本不會(huì)觸發(fā)EuroDate.str,解決方法就是用classmethod

import time
class Date:
    def __init__(self,year,month,day):
        self.year=year
        self.month=month
        self.day=day
    # @staticmethod
    # def now():
    #     t=time.localtime()
    #     return Date(t.tm_year,t.tm_mon,t.tm_mday)

    @classmethod #改成類(lèi)方法
    def now(cls):
        t=time.localtime()
        return cls(t.tm_year,t.tm_mon,t.tm_mday) #哪個(gè)類(lèi)來(lái)調(diào)用,即用哪個(gè)類(lèi)cls來(lái)實(shí)例化

class EuroDate(Date):
    def __str__(self):
        return 'year:%s month:%s day:%s' %(self.year,self.month,self.day)

e=EuroDate.now()
print(e) #我們的意圖是想觸發(fā)EuroDate.__str__,此時(shí)e就是由EuroDate產(chǎn)生的,所以會(huì)如我們所愿
'''
輸出結(jié)果:
year:2017 month:3 day:3
'''
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泞遗,一起剝皮案震驚了整個(gè)濱河市贡必,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绳泉,老刑警劉巖祭往,帶你破解...
    沈念sama閱讀 211,423評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伦意,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡硼补,警方通過(guò)查閱死者的電腦和手機(jī)驮肉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,147評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)括勺,“玉大人,你說(shuō)我怎么就攤上這事曲掰〖埠矗” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,019評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵栏妖,是天一觀的道長(zhǎng)乱豆。 經(jīng)常有香客問(wèn)我,道長(zhǎng)吊趾,這世上最難降的妖魔是什么宛裕? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,443評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮论泛,結(jié)果婚禮上揩尸,老公的妹妹穿的比我還像新娘。我一直安慰自己屁奏,他們只是感情好岩榆,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,535評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著坟瓢,像睡著了一般勇边。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上折联,一...
    開(kāi)封第一講書(shū)人閱讀 49,798評(píng)論 1 290
  • 那天粒褒,我揣著相機(jī)與錄音,去河邊找鬼诚镰。 笑死奕坟,一個(gè)胖子當(dāng)著我的面吹牛祥款,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播执赡,決...
    沈念sama閱讀 38,941評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼镰踏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了沙合?” 一聲冷哼從身側(cè)響起奠伪,我...
    開(kāi)封第一講書(shū)人閱讀 37,704評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎首懈,沒(méi)想到半個(gè)月后绊率,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,152評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡究履,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,494評(píng)論 2 327
  • 正文 我和宋清朗相戀三年滤否,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片最仑。...
    茶點(diǎn)故事閱讀 38,629評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡藐俺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出泥彤,到底是詐尸還是另有隱情欲芹,我是刑警寧澤,帶...
    沈念sama閱讀 34,295評(píng)論 4 329
  • 正文 年R本政府宣布吟吝,位于F島的核電站菱父,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏剑逃。R本人自食惡果不足惜浙宜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,901評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛹磺。 院中可真熱鬧粟瞬,春花似錦、人聲如沸萤捆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)鳖轰。三九已至清酥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蕴侣,已是汗流浹背焰轻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,978評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昆雀,地道東北人辱志。 一個(gè)月前我還...
    沈念sama閱讀 46,333評(píng)論 2 360
  • 正文 我出身青樓蝠筑,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親揩懒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子什乙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,499評(píng)論 2 348

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

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,092評(píng)論 1 32
  • 綿先秦:佚名綿綿瓜瓞。民之初生已球,自土沮漆臣镣。古公亶父,陶復(fù)陶冗智亮,未有家室忆某。古公亶父,來(lái)朝走馬阔蛉。率西水滸弃舒,至于岐下。爰...
    To者也閱讀 3,826評(píng)論 0 2
  • 經(jīng)常和朋友喝茶状原,一直思考一個(gè)問(wèn)題聋呢,品茶悟道,我們應(yīng)該悟什么呢颠区? 有人說(shuō):茶如人生削锰;也有人借用蘇軾詩(shī)句“自古佳茗如佳...
    二擺閱讀 280評(píng)論 0 2
  • 我的猴年馬月,干了三件一直想干但又不敢干的事:裸辭瓦呼、求職喂窟、考科三测暗。 哪來(lái)的勇氣央串,一下子搞定了這三個(gè)心頭大患...
    壹正閱讀 316評(píng)論 0 0