码迷,mamicode.com
首页 > 编程语言 > 详细

Python的功能模块[2] -> abc -> 利用 abc 建立抽象基类

时间:2017-12-26 12:07:25      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:class   abs   com   pre   www   imp   gpo   not   rom   

abc模块 / abc Module


在定义抽象方法时,为了在初始化阶段就检测是否对抽象方法进行了重定义,Python 提供了 abc 模块。

 1 from abc import ABCMeta, abstractmethod
 2 
 3 # Generate a abstract base obj - MyABC
 4 class MyABC(metaclass=ABCMeta):
 5     #__metaclass__ = ABCMeta
 6     @abstractmethod
 7     def run(self):
 8         pass
 9 
10 class Foo(MyABC):                  
11     def run(self):
12         print(run)
13 
14 f = Foo()
15 f.run()

第 4 行:生成一个抽象的基类 MyABC,这其中利用了 metaclass 元类的相关用法

第 6-7 行:抽象方法装饰器,抽象方法可以不执行任何程序,但是子类中必须重定义这个函数

第 10 行:定义 MyABC 的子类 Foo,此时若 Foo 中没有定义 run 方法,则在运行前便会产生报错,而不是等到运行后才报错

Note: abc.ABCMeta 这是用来生成抽象基础类的元类。由它生成的类可以被直接继承。

 

相关阅读


1. 抽象方法
2. 装饰器

 

参考链接


http://blog.csdn.net/igorzhang/article/details/39026885

 

Python的功能模块[2] -> abc -> 利用 abc 建立抽象基类

标签:class   abs   com   pre   www   imp   gpo   not   rom   

原文地址:https://www.cnblogs.com/stacklike/p/8116713.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!