zoukankan      html  css  js  c++  java
  • python类的多态

    1. 什么是多态
        多态指的是同一种/类事物的不同形态
     
    2. 为何要用多态
        多态性:在多态的背景下,可以在不用考虑对象具体类型的前提下而直接使用对象
        多态性的精髓:统一
     
    3. 如何用多态
    例:不同的动物有不同的叫声。
    class Animal:
        def speak(self):
            pass
     
    class People(Animal):
        def shuo(self):
            print('say hello')
     
    class Dog(Animal):
        def jiao(self):
            print('汪汪汪')
     
    class Pig(Animal):
        def chang(self):
            print('哼哼哼')
     
     
    obj1=People()
    obj2=Dog()
    obj3=Pig()
     
     
    # obj1.speak()
    # obj2.speak()
    # obj3.speak()
     
    def speak(animal):
        animal.speak()
     
     
    speak(obj1)
    speak(obj2)
    speak(obj3)
     
    s1='hello'
    l1=[1,2,3]
    t1=(1,2)
     
    print(len(s1)) #s1.__len__()
    print(len(l1)) #l1.__len__()
    print(len(t1)) #t1.__len__()
    '''
    import abc
     
    class Animal(metaclass=abc.ABCMeta):
        @abc.abstractmethod     #加上abc的装饰器就好像java里的抽象类,必须要求子类重写,否则就报错。
        def speak(self):
            pass
     
        @abc.abstractmethod
        def run(self):
            pass
     
    # Animal() # 父类只是用来建立规范的,不能用来实例化的,更无需实现内部的方法
     
    class People(Animal):
        def speak(self):
            print('say hello')
     
        def run(self):
            pass
     
    class Dog(Animal):
        def speak(self):
            print('汪汪汪')
     
        def run(self):
            pass
     
    class Pig(Animal):
        def speak(self):
            print('哼哼哼')
     
        def run(self):
            pass
     
    obj1=People()
    obj2=Dog()
    obj3=Pig()
    
    # ps:python崇尚鸭子类型(看上去像鸭子,走路,叫声等等都像鸭子,那么它就是鸭子)
  • 相关阅读:
    BSGS算法(大步小步算法)
    UVA-11426【GCD
    UVA-1637【Double Patience】(概率dp)
    UVA-11174【Stand in a Line】
    About
    51nod 1355 斐波那契的最小公倍数
    CodeForces
    CodeForces
    CodeForces
    CodeForces 901C Bipartite Segments
  • 原文地址:https://www.cnblogs.com/haiguixiansheng/p/9513403.html
Copyright © 2011-2022 走看看