from abc import ABCMeta,abstractmethod
class Pet(object,metaclass=ABCMeta):
'''宠物'''
def __init__(self,nickname):
self._nickname=nickname
@abstractmethod
def make_voice(self):
'''发出声音'''
pass
class Dog(Pet):
'''狗'''
def make_voice(self):
print("%s:汪汪汪..."%self._nickname)
class Cat(Pet):
'''猫'''
def make_voice(self):
print("%s:喵喵喵"%self._nickname)
def main():
pets=[Dog('旺财'),Cat('凯蒂'),Dog('大黄')]
for pet in pets:
pet.make_voice()
if __name__=='__main__':
main()
1.抽象类不能被实例化
2.在类中继承ABC模块ABCMeta元类和通过abstractmethod装饰器修饰,就成了一个抽象类
3.类是从一堆对象中抽取相同的内容而来的,那么抽象类就是从一堆类中抽取相同的内容而来的,内容包括数据属性和函数属性。
4.抽象类函数属性,指定义,不实现
python学习之抽象类
猜你喜欢
转载自www.cnblogs.com/jinpingzhao/p/12624251.html
今日推荐
周排行