>> a = MyCls() >>> a.foo() m" />
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')
一個簡單的用例
>>> a = MyCls() >>> a.foo() Traceback (most recent call last): File "", line 1, in File " ", line 3, in foo Exception: ('no implement exception', 'foo method need implement')
這就是2.7之前的寫法了,2.7給了我們新的支持方法!abc模塊(abstruct base class),這個在py3k中已經(jīng)實(shí)現(xiàn),算是back port吧。
我們來看看新的寫法
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 "", line 1, in TypeError: Can't instantiate abstract class C with abstract methods bar >>>
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com