python学习之抽象类

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.抽象类函数属性,指定义,不实现

猜你喜欢

转载自www.cnblogs.com/jinpingzhao/p/12624251.html
今日推荐