如果希望一個對象的某個方法只能夠調(diào)用一次,按照我之前的慣性思維,我肯定是定義一個狀態(tài)量然后每次調(diào)用的時候修改它的值。通過查看狀態(tài)量的數(shù)值,我可以決定采取執(zhí)行不同的處理。
其實,除此之外還有一種方法,不僅僅能夠?qū)崿F(xiàn)這樣的處理,還能夠順便處理對象的屬性。
先看一下如下的代碼:
class DemoClass: def __init__(self): pass def AttrCheck(self): try: self.value print("already hasvalue") raise ValueAttrError except AttributeError: self.value = 0 print(self.value) obj = DemoClass() obj.AttrCheck() obj.AttrCheck()
程序執(zhí)行結(jié)果如下:
grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python attr1.py 0 already has value Traceback (mostrecent call last): File "attr1.py", line 15, in<module> obj.AttrCheck() File "attr1.py", line 8, inAttrCheck raiseRuntimeError("multi-excued!") RuntimeError:multi-excued!
從上面的結(jié)果看,我們所描述到的功能已經(jīng)這樣實現(xiàn)了!
上面的屬性是給了默認(rèn)的賦值,我們當(dāng)然也可以改成帶有賦值數(shù)值的形式:
class DemoClass: def __init__(self): pass def AttrCheck(self,value): try: self.value print("already hasvalue") raiseRuntimeError("multi-excued!") except AttributeError: self.value = value print(self.value) obj = DemoClass() obj.AttrCheck(123) obj.AttrCheck(123)
程序的執(zhí)行結(jié)果如下:
grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python attr1.py 123 already has value Traceback (mostrecent call last): File "attr1.py", line 15, in<module> obj.AttrCheck(123) File "attr1.py", line 8, in AttrCheck raiseRuntimeError("multi-excued!") RuntimeError:multi-excued!
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com