Python2和Python3中@abstractmethod使用方法
作者:邱明成 发布时间:2021-12-29 08:55:36
标签:Python,abstractmethod
这篇文章主要介绍了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, abstractmethod
class Foo(ABC):
@abstractmethod
def 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, ABCMeta
class Bar(metaclass=ABCMeta):
@abstractmethod
def 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, abstractmethod
class FooBar():
__metaclass__ = ABCMeta
@abstractmethod
def fun(self):
'''please Implemente in subclass'''
class SubFooBar(FooBar):
def fun(self):
print('fun in SubFooBar')
a = SubFooBar()
a.fun()
来源:https://www.cnblogs.com/qiumingcheng/p/12244896.html
0
投稿
猜你喜欢
- jQuery居然都没有JSON的decode和encode,精确类型判断也没有,囧……自己动手写吧!不过这些东西在网上都已经有很好的版本了,
- 代码如下: <!-- #include file="../conn.asp" --> <!-- #in
- 如何清除Vbscript惹出来的中文乱码? <script language=vbscript runat=s
- Oracle text是Oracle的全文检索技术,是9i版本标准版和企业版的一部分。Oracle text使用标准的sql语言索引、查找、
- 在python中json分别由列表和字典组成,本文主要介绍python中字典与json相互转换的方法。使用json.dumps可以把字典转成
- MySQL存储过程SAVEPOINT ROLLBACK to示例如下:DELIMITER $$DROP PROCEDURE IF EXIST
- 有的时候,操作大文件,或者取数,要很久,我们给脚本首尾添加一段代码就知道,这段代码整体的大致运行时间了。import timestart =
- 代码如下:CREATE TABLE [dbo].[TbGuidTable]( [TableName] [varchar](50) NOT N
- 《Patterns for Sign Up &Ramp Up》很早就读完了,之所以今天才写读后感,细细读完了发现,它更为接近吸引注册
- 本文实例为大家分享了python爬取51job中hr的邮箱具体代码,供大家参考,具体内容如下#encoding=utf8import url
- 首先先定义一个list,将其转存为csv文件,看将会报什么错误list=[[1,2,3],[4,5,6],[7,9,9]]list.to_c
- 数据import numpy as npimport pandas as pddata = [{'Name': '小
- 从python2.4版本开始,可以用subprocess这个模块来产生子进程,并连接到子进程的标准输入/输出/错误中去,还可以得到子进程的返
- 也许还有朋友不太清楚DOMContentLoaded这个事件。简单的说,这个事件就是要在大多数情况下去替代window.onload事件,因
- 一、场景描述这里有以四张发票为例(辰哥网上搜的),将发票图片放到pic文件夹下。随便打开一张发票提取目标:金额、名称、纳税人识别号、开票人。
- 在PHP界谈模板引擎,必不可免的要拿Smarty开刀, 这个无比傻帽的却又带有一点点官方色彩的模板引擎, 如果没有我这样人富有正义感又富有创
- Css Reset是什么? 有些同行叫 "css复位",有些可能叫 "默认css".....相信看完
- 在域环境下我没配置成果,也许是域用户的原因,因为我在生产环境下搞的,更改域用户需要重启SQLServer ,所以这个方法放弃了,只能用证书形
- 关于CSS中的命名规则(其实我觉得是XHTML元素的命名规则更加合理些)这个问题,已经有很多人在说了,其中也不乏一些真知灼见。不过这种东西也
- Dim iSet conn=Server.CreateObject("ADODB.Connecti