欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

千鋒扣丁學(xué)堂Python培訓(xùn)之全面解析@property的使用

2019-05-22 13:54:29 3640瀏覽

今天千鋒扣丁學(xué)堂Python培訓(xùn)老師給大家分享一篇關(guān)于日常學(xué)員遇到的問(wèn)題收集,問(wèn)題:python中@property的使用詳解,下面我們一起來(lái)看一下吧。



classTVshow:

 class TVshow:
        a =['戰(zhàn)狼','紅樓夢(mèng)','西游記','亮劍']
        def __init__(self,show):
            self.show = show
        @property
        def show(self):
            return self.show
        @show.setter
        def show(self,vloue):
            if vloue in self.a:
                self.show = '您選澤的:《'+vloue+'》,稍后將播放'
            else:
                self.show = '您點(diǎn)播的電影不存在'
    tvshow=TVshow('戰(zhàn)狼')
    print('正在播放:《',tvshow.show,'》')
    print('您可以從',TVshow.a,'中選澤要點(diǎn)播的電影')
    tvshow.show='紅樓夢(mèng)'
    print(tvshow.show)

運(yùn)行結(jié)果:

Traceback (most recent call last):
              ......
    [Previous line repeated 492 more times]
    RecursionError: maximum recursion depth exceeded
                           #超過(guò)最大遞歸深度
    Process finished with exit code 1

報(bào)錯(cuò)了,經(jīng)過(guò)改正后的代碼如下:

classTVshow:

        a =['戰(zhàn)狼','紅樓夢(mèng)','西游記','亮劍']
        def __init__(self,show):
            self._show = show
        @property
        def show(self):
            return self._show
        @show.setter
        def show(self,vloue):
            if vloue in self.a:
                self._show = '您選澤的:《'+vloue+'》,稍后將播放'
            else:
                self._show = '您點(diǎn)播的電影不存在'
    tvshow=TVshow('戰(zhàn)狼')
    print('正在播放:《',tvshow._show,'》')
    print('您可以從',TVshow.a,'中選澤要點(diǎn)播的電影')
    tvshow.show='紅樓夢(mèng)'
    print(tvshow.show)

運(yùn)行結(jié)果:

    正在播放:《 戰(zhàn)狼 》
    您可以從 ['戰(zhàn)狼', '紅樓夢(mèng)', '西游記', '亮劍'] 中選澤要點(diǎn)播的電影
    您選澤的:《紅樓夢(mèng)》,稍后將播放

    Process finished with exit code 0

想不到吧,一個(gè)小小的下劃線竟然是罪魁禍?zhǔn)?。不過(guò)還是不能理解,為什么報(bào)錯(cuò)會(huì)報(bào)循環(huán)超出最大深度的錯(cuò),又查找了一番資料,才發(fā)現(xiàn)我對(duì)@property這個(gè)裝飾器一點(diǎn)也不理解。

@property的作用是把一個(gè)getter方法變成屬性,@xxxx.setter把setter方法變成屬性賦值,讓get和set方法更好用。

[當(dāng)方法名與屬性名一致時(shí),類(lèi)屬性的下劃線不能少,否則,會(huì)報(bào)錯(cuò),原因在于:如果不加下劃線出現(xiàn)self.show時(shí)就會(huì)繼續(xù)調(diào)用此類(lèi)的getter方法出現(xiàn)死循環(huán)。這個(gè)是我們需要注意的]

仔細(xì)看看Python的高級(jí)特性10:無(wú)聊的@property的文章后才發(fā)現(xiàn)還有另一種改法:

    #必須保證兩個(gè)xxxx方法名與@xxxx.setter一致,但是不能與將要輸出的屬性名相同
    class TVshow:
        a =['戰(zhàn)狼','紅樓夢(mèng)','西游記','亮劍']
        def __init__(self,show):
            self.show = show
        @property
        def sxshow(self):
            return self.show
        @sxshow.setter
        def sxshow(self,vloue):
            if vloue in self.a:
                self.show = '您選澤的:《'+vloue+'》,稍后將播放'
            else:
                self.show = '您點(diǎn)播的電影不存在'
    tvshow=TVshow('戰(zhàn)狼')
    print('正在播放:《',tvshow.show,'》')
    print('您可以從',TVshow.a,'中選澤要點(diǎn)播的電影')
    tvshow.show='紅樓夢(mèng)'
    print(tvshow.show)

運(yùn)行結(jié)果:

    正在播放:《 戰(zhàn)狼 》
    您可以從 ['戰(zhàn)狼', '紅樓夢(mèng)', '西游記', '亮劍'] 中選澤要點(diǎn)播的電影
    紅樓夢(mèng)

    Process finished with exit code 0

以上就是關(guān)于千鋒扣丁學(xué)堂Python培訓(xùn)之全面解析@property使用的全部?jī)?nèi)容,想要學(xué)好Python開(kāi)發(fā)小編給大家推薦口碑良好的扣丁學(xué)堂,扣丁學(xué)堂有專(zhuān)業(yè)老師制定的Python學(xué)習(xí)路線圖輔助學(xué)員學(xué)習(xí),此外還有與時(shí)俱進(jìn)的Python課程體系和Python視頻教程供大家學(xué)習(xí),想要學(xué)好Python開(kāi)發(fā)技術(shù)的小伙伴快快行動(dòng)吧??鄱W(xué)堂Python技術(shù)交流群:279521237。


扣丁學(xué)堂微信公眾號(hào)                          Python全棧開(kāi)發(fā)爬蟲(chóng)人工智能機(jī)器學(xué)習(xí)數(shù)據(jù)分析免費(fèi)公開(kāi)課直播間


      【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】         【掃碼進(jìn)入Python全棧開(kāi)發(fā)免費(fèi)公開(kāi)課】



查看更多關(guān)于"Python開(kāi)發(fā)資訊"的相關(guān)文章>

標(biāo)簽: Python培訓(xùn) Python視頻教程 Python在線視頻 Python學(xué)習(xí)視頻 Python培訓(xùn)班

熱門(mén)專(zhuān)區(qū)

暫無(wú)熱門(mén)資訊

課程推薦

微信
微博
15311698296

全國(guó)免費(fèi)咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號(hào)中關(guān)村智誠(chéng)科創(chuàng)大廈4層
京ICP備2021002079號(hào)-2   Copyright ? 2017 - 2022
返回頂部 返回頂部