1. 程式人生 > >python的抽象類和抽象方法

python的抽象類和抽象方法

裝飾 ror 實例 imp 調用 str 定義 meta 拋出異常

class Foo(object):
    def exec(self):
        raise NotImplementedError(‘請實現exec方法‘)

class A(Foo):
    pass
obj=A()
obj.exec()

  類A繼承類Foo,因而擁有類Foo的所有屬性。類A實例化一個對象obj,obj調用exec()方法,如果類A自己沒有定義exec方法,就會拋出異常。

from abc import abstractmethod,ABCMeta

class Foo(metaclass=ABCMeta):
    @abcstractmethod
    def exec(self):
        pass

class A(Foo):
    pass
obj=A()

  從abc模塊調用類abstractmethod和類ABCMeta,自己定義類Foo,繼承抽象類ABCMeta,在類Foo中定義exec方法,並添加裝飾器abcstractmethod。定義類A繼承類Foo,並實例化對象obj,類A中必須有類Foo中的方法否則就會拋出異常。

python的抽象類和抽象方法