python 抽象类抽象方法的实现
Posted 每天学习一点点
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 抽象类抽象方法的实现相关的知识,希望对你有一定的参考价值。
ABC 是一些不能被实例化的类。Python 3 添加了一个新的框架 —abc— 它提供了对 ABC 的支持。这个 abc 模块具有一个元类(ABCMeta
)和 修饰符(@abstractmethod
和 @abstractproperty
)。如果一个 ABC 具有一个 @abstractmethod
或 @abstractproperty
,它就不能被实例化,但必须在一个子类内被覆盖。比如,如下代码:
#-*- coding:utf-8 -*- from abc import ABCMeta,abstractmethod #抽象类 class A(object): __metaclass__ = ABCMeta @abstractmethod def fun(self):pass @abstractmethod def _f(self):pass # @abstractmethod 私有方法不能是抽象方法 def __f(self): pass #实现类 class B(A): def fun(self,name): print \'B for %s\'%name def _f(self,name): print \'B for %s\'%name def __f(self,name): return \'B for %s\'%name def do(self,name): print self.__f(name) #a=A() 抽象类无法实例化 b=B() b.fun(\'ybf\') b.fun(\'yyj\') #b.__f() 无法调用 b.do(\'ybf&yyj\')
输出:
B for ybf
B for yyj
B for ybf&yyj
如果子类不实现父类的方法,则会报错。如果不清楚_、__、__xx__的差别,看这里:python _、__、__xx__之间的差别。
以上是关于python 抽象类抽象方法的实现的主要内容,如果未能解决你的问题,请参考以下文章