在Python3中创建方法
from abc import ABCMeta,abstractmethod
class Abstract(metaclass=ABCMeta):
@abstractmethod
def func(self):
pass
class A(Abstract):
def func(self):
print("A")
class B(Abstract):
pass
a = A()
b = B()#报错,没有实现抽象方法
或者
from abc import ABC,abstractmethod
class Abstract(ABC):
@abstractmethod
def func(self):
pass
class A(Abstract):
def func(self):
print("A")
class B(Abstract):
pass
a = A()
b = B()#报错,没有实现抽象方法
在python2中的定义方法
from abc import ABCMeta,abstractmethod
class Abstract(object):
__metaclass__ = ABCMeta
@abstractmethod
def func(self):
pass
class A(Abstract):
def func(self):
print("A")
class B(Abstract):
pass
a = A()
b = B()#报错,没有实现抽象方法
总结:抽象类的写法在两个版本是不兼容的,python2的写法运行在python3环境下是不起作用的,python3的方法用在python2下会直接报错。