乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      【Python之路】第七篇

       highoo 2019-03-20

      面向?qū)ο蠡A(chǔ)

      基礎(chǔ)內(nèi)容介紹詳見一下兩篇博文:

      其他相關(guān)

      一、isinstance(obj, cls)

       檢查obj是否是類 cls 的對象

      1
      2
      3
      4
      5
      6
      class Foo(object):
          pass
        
      obj = Foo()
        
      isinstance(obj, Foo)

      二、issubclass(sub, super)

      檢查sub類是否是 super 類的派生類

      1
      2
      3
      4
      5
      6
      7
      class Foo(object):
          pass
        
      class Bar(Foo):
          pass
        
      issubclass(Bar, Foo)

      三、異常處理

      1、異?;A(chǔ)

      在編程過程中為了增加友好性,在程序出現(xiàn)bug時一般不會將錯誤信息顯示給用戶,而是現(xiàn)實一個提示的頁面,通俗來說就是不讓用戶看見大黃頁?。?!

      1
      2
      3
      4
      try:
          pass
      except Exception as ex:
          pass

      需求:將用戶輸入的兩個數(shù)字相加

      View Code

      2、異常種類

      python中的異常種類非常多,每個異常專門用于處理某一項異常?。。?/p>

      常用異常
      更多異常
      實例IndexError
      實例KeyError
      實例ValueError

      對于上述實例,異常類只能用來處理指定的異常情況,如果非指定異常則無法處理。

      1
      2
      3
      4
      5
      6
      7
      # 未捕獲到異常,程序直接報錯
        
      s1 = 'hello'
      try:
          int(s1)
      except IndexError as e:
          print e

      所以,寫程序時需要考慮到try代碼塊中可能出現(xiàn)的任意異常,可以這樣寫:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      s1 = 'hello'
      try:
          int(s1)
      except IndexError as e:
          print e
      except KeyError as e:
          print e
      except ValueError as e:
          print e

      萬能異常 在python的異常中,有一個萬能異常:Exception,他可以捕獲任意異常,即:

      1
      2
      3
      4
      5
      s1 = 'hello'
      try:
          int(s1)
      except Exception as e:
          print e

      接下來你可能要問了,既然有這個萬能異常,其他異常是不是就可以忽略了!

      答:當然不是,對于特殊處理或提醒的異常需要先定義,最后定義Exception來確保程序正常運行。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      s1 = 'hello'
      try:
          int(s1)
      except KeyError as e:
          print '鍵錯誤'
      except IndexError as e:
          print '索引錯誤'
      except Exception as e:
          print '錯誤'

      3、異常其他結(jié)構(gòu)

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      try:
          # 主代碼塊
          pass
      except KeyError,e:
          # 異常時,執(zhí)行該塊
          pass
      else:
          # 主代碼塊執(zhí)行完,執(zhí)行該塊
          pass
      finally:
          # 無論異常與否,最終執(zhí)行該塊
          pass

      4、主動觸發(fā)異常

      1
      2
      3
      4
      try:
          raise Exception('錯誤了。。。')
      except Exception as e:
          print(e)

      5、自定義異常

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      class AlexException(Exception):
        
          def __init__(self, msg):
              self.message = msg
        
          def __str__(self):
              return self.message
        
      try:
          raise AlexException('我的異常')
      except AlexException as e:
          print(e)

      6、斷言

      1
      2
      3
      4
      5
      6
      7
      8
      # assert 條件
      assert 1 == 1
      assert 1 == 2
      如果成立就成立,不成立就報錯
      # 添加異常參數(shù)
      assert 2==1,'2不等于1'

      設(shè)計模式

      一、單例模式

        單例,顧名思義單個實例。

      學(xué)習單例之前,首先來回顧下面向?qū)ο蟮膬?nèi)容:

      python的面向?qū)ο笥蓛蓚€非常重要的兩個“東西”組成:類、實例

      面向?qū)ο髨鼍耙唬?/strong>

      如:創(chuàng)建三個游戲人物,分別是:

      • 蒼井井,女,18,初始戰(zhàn)斗力1000

      • 東尼木木,男,20,初始戰(zhàn)斗力1800

      • 波多多,女,19,初始戰(zhàn)斗力2500

      View Code

      面向?qū)ο髨鼍岸?/strong>

      如:創(chuàng)建對數(shù)據(jù)庫操作的公共類

      View Code

       實例:結(jié)合場景二實現(xiàn)Web應(yīng)用程序

      View Code

        對于上述實例,每個請求到來,都需要在內(nèi)存里創(chuàng)建一個實例,再通過該實例執(zhí)行指定的方法。

        那么問題來了...如果并發(fā)量大的話,內(nèi)存里就會存在非常多功能上一模一樣的對象。存在這些對象肯定會消耗內(nèi)存,對于這些功能相同的對象可以在內(nèi)存中僅創(chuàng)建一個,需要時都去調(diào)用,也是極好的?。。?/p>

       鐺鐺 鐺鐺 鐺鐺鐺鐺鐺,單例模式出馬,單例模式用來保證內(nèi)存中僅存在一個實例?。?!

       

       通過面向?qū)ο蟮奶匦?,?gòu)造出單例模式:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      # ########### 單例類定義 ###########
      class Foo(object):
        
          __instance = None
        
          @staticmethod
          def singleton():
              if Foo.__instance:
                  return Foo.__instance
              else:
                  Foo.__instance = Foo()
                  return Foo.__instance
        
      # ########### 獲取實例 ###########
      obj = Foo.singleton()

      對于Python單例模式,創(chuàng)建對象時不能再直接使用:obj = Foo(),而應(yīng)該調(diào)用特殊的方法:obj = Foo.singleton() 。

      web應(yīng)用實例-單例模式

      總結(jié):單利模式存在的目的是保證當前內(nèi)存中僅存在單個實例,避免內(nèi)存浪費!??!

       

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多