Python 抽象类抽象方法

在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下会直接报错。

猜你喜欢

转载自blog.csdn.net/a540366413/article/details/75005680