Python通過屬性手段實現(xiàn)只允許調(diào)用一次的示例講解
如果希望一個對象的某個方法只能夠調(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!
以上這篇Python通過屬性手段實現(xiàn)只允許調(diào)用一次的示例講解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Pandas中DataFrame的分組/分割/合并的實現(xiàn)
這篇文章主要介紹了Pandas中DataFrame的分組/分割/合并的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Java Spring項目國際化(i18n)詳細(xì)方法與實例
這篇文章主要介紹了Java Spring項目國際化詳細(xì)方法與實例,需要的朋友可以參考下2020-03-03
python3對接mysql數(shù)據(jù)庫實例詳解
這篇文章主要介紹了python3對接mysql數(shù)據(jù)庫,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
零基礎(chǔ)寫python爬蟲之urllib2中的兩個重要概念:Openers和Handlers
文章首先介紹了urllib2的2個方法,然后詳細(xì)介紹了urllib2中的2個重要概念Openers和Handlers的相關(guān)知識,希望能對大家有所幫助2014-11-11

