Python透過屬性手段實作只允許呼叫一次的範例講解_python

不言
發布: 2018-04-21 14:41:25
原創
1976 人瀏覽過

下面為大家分享一篇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透過屬性手段實作只允許呼叫一次的範例講解_python的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板