小白学python-------------面向对象之多态

一.什么叫多态

多态:同一种事物的多种形态

例如:水,有冰,液态水,水蒸气;动物,有人,狗,猪,猫.

二.为何用多态

继承同一个类的子类中有相同的方法名,那么子类产生的对象不用考虑具体的类型直接调用功能

多态的精髓:统一标准

不推崇!!!!
import abc
#abstract抽象

class Animal(metaclass=abc.ABCMeta):#标准的统一,父类是定标准的,不需要实例化
    @abc.abstractmethod
    def speak(self):
        pass

    @abc.abstractmethod
    def eat(self):
        pass

# 父类是用来制定标准的,不能被实例化
#父类制定的标准,子类必须按着这个标准来,不推崇这种方法,推崇约定俗成
class People(Animal):
    def speak(self):
        print('hello')
    def eat(self):
        pass

class Dog(Animal):
    def speak(self):
        print('汪汪汪')
    def eat(self):
        pass

class Pig(Animal):
    def speak(self):
        print('哼哼哼')
    def eat(self):
        pass

peo1 = People()
dog1 = Dog()
pig1 = Pig()

peo1.speak()
dog1.speak()
pig1.speak()

def my_speak(animal):
    animal.speak()
my_speak(peo1)
my_speak(dog1)
my_speak(pig1)

python讲究的是规范,是约定俗成,而不是规定,所以不推崇上面这种方法,python推崇的鸭子类型

鸭子类型:只要你叫的声音的像鸭子,走路像鸭子,你就是鸭子.

猜你喜欢

转载自blog.csdn.net/qq_42721964/article/details/81906914