zoukankan      html  css  js  c++  java
  • 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.抽象类函数属性,指定义,不实现
    5.Dog和Cat两个子类分别对Pet类中的make_voice抽象方法进行了重写并给出了不同的实现版本,当我们在main函数中调用该方法时,这个方法就表现出了多态行为
  • 相关阅读:
    认识双阶乘
    认识双阶乘
    微积分的计算
    微积分的计算
    多维随机变量与其对应的分布
    多维随机变量与其对应的分布
    抽样分布与统计推断
    抽样分布与统计推断
    各国货币的研究
    各国货币的研究
  • 原文地址:https://www.cnblogs.com/jinpingzhao/p/12624251.html
Copyright © 2011-2022 走看看