最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python抽象類的新寫法

 更新時(shí)間:2015年06月18日 08:46:35   投稿:junjie  
這篇文章主要介紹了Python抽象類的新寫法,本文講解了老版本中的hack方式實(shí)現(xiàn)抽象類,以及2.7以后使用abstractmethod模塊寫抽象類的方法,需要的朋友可以參考下

記得之前l(fā)earn python一書里面,因?yàn)楫?dāng)時(shí)沒(méi)有官方支持,只能通過(guò)hack的方式實(shí)現(xiàn)抽象方法,具體如下 最簡(jiǎn)單的寫法

class MyCls():
  def foo(self):
    print('method no implement')

運(yùn)行的例子


>>> a = MyCls()
>>> a.foo()
method no implement
>>>

這樣雖然可以用,但是提示不明顯,還是容易誤用,當(dāng)然,還有更好的方法 較為可以接受的寫法

class MyCls():
  def foo(self):
    raise Exception('no implement exception', 'foo method need implement')

一個(gè)簡(jiǎn)單的用例

>>> a = MyCls()
>>> a.foo()
Traceback (most recent call last):
 File "<interactive input>", line 1, in <module>
 File "<clipboard>", line 3, in foo
Exception: ('no implement exception', 'foo method need implement')

這就是2.7之前的寫法了,2.7給了我們新的支持方法!abc模塊(abstruct base class),這個(gè)在py3k中已經(jīng)實(shí)現(xiàn),算是back port吧。

我們來(lái)看看新的寫法

from abc import ABCMeta
 
from abc import ABCMeta,abstractmethod
 
class Foo():
  __metaclass__ = ABCMeta
  @abstractmethod
  def bar(self):
    pass

運(yùn)行效果

>>> class B(Foo):
... def bar(self):
... pass
... 
>>> B()
<__main__.B object at 0x02EE7B50>
>>> B().bar()
>>> class C(Foo):
... pass
... 
>>> C().bar()
Traceback (most recent call last):
 File "<interactive input>", line 1, in <module>
TypeError: Can't instantiate abstract class C with abstract methods bar
>>> 


相關(guān)文章

  • 通過(guò)實(shí)例解析Python return運(yùn)行原理

    通過(guò)實(shí)例解析Python return運(yùn)行原理

    這篇文章主要介紹了通過(guò)實(shí)例解析Python return運(yùn)行原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • jupyter notebook清除輸出方式

    jupyter notebook清除輸出方式

    這篇文章主要介紹了jupyter notebook清除輸出方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Python定義空函數(shù)的6種方法小結(jié)

    Python定義空函數(shù)的6種方法小結(jié)

    本文主要介紹了Python中定義空函數(shù)的6種方法,包括注釋、pass、return、Ellipsis等,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Python替換月份為英文縮寫的實(shí)現(xiàn)方法

    Python替換月份為英文縮寫的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇Python替換月份為英文縮寫的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • python處理文本文件并生成指定格式的文件

    python處理文本文件并生成指定格式的文件

    本節(jié)主要介紹了python如何處理文本文件并生成指定格式的文件,需要的朋友可以參考下
    2014-07-07
  • jmeter中用python實(shí)現(xiàn)請(qǐng)求參數(shù)的隨機(jī)方式

    jmeter中用python實(shí)現(xiàn)請(qǐng)求參數(shù)的隨機(jī)方式

    首先,需下載Jython插件于https://www.jython.org/download后,將其放入JMeter的lib目錄并重啟JMeter,其次,添加JSR223PreProcessor并選擇Python作為語(yǔ)言,編寫腳本,其中metrics_ids3和metrics_weidu3為列表變量
    2024-10-10
  • python實(shí)現(xiàn)linux服務(wù)器批量修改密碼并生成execl

    python實(shí)現(xiàn)linux服務(wù)器批量修改密碼并生成execl

    這篇文章主要介紹了python實(shí)現(xiàn)linux服務(wù)器批量修改密碼并生成execl示例,需要的朋友可以參考下
    2014-04-04
  • Django中Forms的使用代碼解析

    Django中Forms的使用代碼解析

    這篇文章主要介紹了Django中Forms的使用代碼解析,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • 全面解析Python中的self技巧

    全面解析Python中的self技巧

    在Python中,類的方法定義時(shí)通常會(huì)包含一個(gè)名為?self?的參數(shù),它表示對(duì)象實(shí)例本身,下面我們就來(lái)了解一下self的相關(guān)應(yīng)用技巧,需要的可以參考下
    2024-01-01
  • Anaconda出現(xiàn)CondaHTTPError: HTTP 000 CONNECTION FAILED for url的解決過(guò)程

    Anaconda出現(xiàn)CondaHTTPError: HTTP 000 CONNECTION FAILED for url

    使用anaconda創(chuàng)建一個(gè)新的環(huán)境,執(zhí)行“conda create -n scrapyEnv python=3.6”,結(jié)果出現(xiàn)了CondaHTTPError,下面我們就一起來(lái)了解一下解決方法吧
    2021-05-05

最新評(píng)論

正宁县| 龙井市| 永定县| 靖宇县| 仁怀市| 佛山市| 峨眉山市| 龙里县| 米脂县| 乌鲁木齐县| 襄垣县| 修武县| 阳朔县| 许昌市| 宜昌市| 娄底市| 阿拉善盟| 辽阳县| 霞浦县| 石河子市| 门头沟区| 皮山县| 梅州市| 庆元县| 曲水县| 凭祥市| 永德县| 大余县| 旬阳县| 宁夏| 伊川县| 吴江市| 兴业县| 南召县| 凤城市| 武强县| 顺昌县| 含山县| 平泉县| 深水埗区| 娄烦县|