下面為大家分享一篇Python透過屬性手段實現只允許調用一次的範例講解,具有很好的參考價值,希望對大家有所幫助。一起過來看看吧
如果希望一個物件的某個方法只能夠呼叫一次,按照我之前的慣性思維,我肯定是定義一個狀態量然後每次呼叫的時候修改它的值。透過查看狀態量的數值,我可以決定採取執行不同的處理。
其實,除此之外還有一種方法,不只能夠實現這樣的處理,還能夠順便處理物件的屬性。
先看如下的程式碼:
#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()
#程式執行結果如下:
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!
從上面的結果來看,我們所描述的功能已經這樣實作了! 上面的屬性是給了預設的賦值,我們當然也可以改成有賦值數值的形式:
##
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)
程式的執行結果如下:
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透過屬性手段實作只允許呼叫一次的範例講解_python的詳細內容。更多資訊請關注PHP中文網其他相關文章!