欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

Python2和Python3中@abstractmethod的用法

发布时间:2025/3/15 python 29 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Python2和Python3中@abstractmethod的用法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

抽象方法:

抽象方法表示基类的一个方法,没有实现,所以基类不能实例化,子类实现了该抽象方法才能被实例化。

Python的abc提供了@abstractmethod装饰器实现抽象方法,下面以Python3的abc模块举例。

@abstractmethod:

见下图的代码,基类Foo的fun方法被@abstractmethod装饰了,所以Foo不能被实例化;子类SubA没有实现基类的fun方法也不能被实例化;子类SubB实现了基类的抽象方法fun所以能实例化。

完整代码:

在Python3.4中,声明抽象基类最简单的方式是子类话abc.ABC;Python3.0到Python3.3,必须在class语句中使用metaclass=ABCMeta;Python2中使用__metaclass__=ABCMeta

 

Python3.4 实现方法:

from abc import ABC, abstractmethodclass Foo(ABC):@abstractmethoddef fun(self):'''please Implemente in subclass'''class SubFoo(Foo):def fun(self):print('fun in SubFoo')a = SubFoo() a.fun()

 

Python3.0到Python3.3的实现方法:

from abc import abstractmethod, ABCMetaclass Bar(metaclass=ABCMeta):@abstractmethoddef fun(self):'''please Implemente in subclass'''class SubBar(Bar):def fun(self):print('fun in SubBar')b = SubBar() b.fun()

 

Python2的实现方法:

from abc import ABCMeta, abstractmethodclass FooBar():__metaclass__ = ABCMeta@abstractmethoddef fun(self):'''please Implemente in subclass'''class SubFooBar(FooBar):def fun(self):print('fun in SubFooBar')a = SubFooBar() a.fun()

 

 

总结

以上是生活随笔为你收集整理的Python2和Python3中@abstractmethod的用法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。