Python abc模块的几个小知识点
来源:互联网 发布:js小写转化为大写 编辑:程序博客网 时间:2024/06/13 03:48
编程的思想应该在不断地实践中才能够体悟,这是我自己的感受。接触了好长一段时间的OOP,但是一直在实战中用到的很少。或许,平时我需要的仅仅是一些小脚本而已。今天总结一下学习Python OOP遇到的一个小模块,abc。
首先需要了解的是一个基类,abc.ABCMeta。最初看到与之相关的代码,我还把这个理解为了一个参数。这让我在读代码的时候有点不理解。查了一下文档,恍然大悟。原来,这个是用于实现抽象类的一个基础类。
接下来,需要总结的是关于抽象方法的用法。在相应的方法之前一行加上@abstractmethod之后,从新的一行开始定义相应的方法。实现的方法就是一个抽象的方法,有点像Java中的接口。子类继承之后,如果需要用到的这个方法则必须用新的方法将其实现。关于这个,写一段示范代码:
import abc
from abc import *
classSClass(metaclass = abc.ABCMeta):
@abstractmethod
def my_print(self):
pass
classCClass(SClass):
pass
cc = CClass()
程序执行结果:
E:\01_workspace\02_programme_language\03_python\OOP\2017\08\12>pythonabstractmethod.py
Traceback (mostrecent call last):
File "abstractmethod.py", line 12,in <module>
cc = CClass()
TypeError: Can'tinstantiate abstract class CClass with abstract methods my_print
这样,如果想要能够正确进行实例化就需要对相应的抽象接口进行实现。修改代码如下:
import abc
from abc import *
classSClass(metaclass = abc.ABCMeta):
@abstractmethod
def my_print(self):
pass
classCClass(SClass):
def my_print(self):
print("my childmethod!")
cc = CClass()
程序的执行结果如下:
E:\01_workspace\02_programme_language\03_python\OOP\2017\08\12>pythonabstractmethod.py
E:\01_workspace\02_programme_language\03_python\OOP\2017\08\12>
从上面的结果至少可以看出,这个类是可以实现实例化的。继续修改代码:
import abc
from abc import *
classSClass(metaclass = abc.ABCMeta):
@abstractmethod
def my_print(self):
pass
classCClass(SClass):
def my_print(self):
print("my childmethod!")
cc = CClass()
cc.my_print()
程序的执行结果:
E:\01_workspace\02_programme_language\03_python\OOP\2017\08\12>pythonabstractmethod.py
my child method!
从上面的结果就能够看出,程序运行已经正常。
- Python abc模块的几个小知识点
- Python的ABC模块
- Python的ABC模块
- python中数字的几个小知识点
- python中函数的几个小知识点
- 学习Python的ABC模块
- 学习Python的ABC模块
- python abc模块
- perl的几个小知识点
- ABC模块的使用
- python-GUI的几个模块
- Python的几个常用模块
- python 几个模块的使用
- 关于Windows8 开发的几个小知识点
- C#(Winform的几个小知识点)
- oracle database的几个小知识点
- js变量数据类型的几个小知识点
- 有关main方法的几个小知识点
- 2482二叉排序树
- 深度学习论文和开源代码
- 机械臂(4)--正向求解
- 公共CBB实现方案思考
- PHP7.0的新特性
- Python abc模块的几个小知识点
- centos安装tomcat7
- mybatis动态SQL之update 去掉最后一个逗号trim方法
- 近来的一些感悟
- 学习笔记TF035:实现基于LSTM语言模型
- linux常用的快捷键
- 算法学习笔记--7.digit-counts
- java打印出当前时间小例子
- 字符设备驱动框架2:设备文件(设备节点)如何和驱动建立联系-Linux字符设备中的两个重要结构体(file、inode)