Python3 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!

       从上面的结果就能够看出,程序运行已经正常。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值