python面向对象的多态与多态性

# 1.什么是多态
#     多态指的是同一种事物的多种形态
#      水》冰,水蒸气
#     动物》人,狗,猪
#
# 2.为何要用多态
#         多态性:
#         继承同一个类的多个子类中有相同的方法名
#         那么子类产生的对象就可以不用考虑具体的类型而直接调用功能
#
#
# 3.如何用

import abc

class Ainmal(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def speak(self):
        pass
    @abc.abstractmethod
    def eat(self):
        pass

#Ainmal()强调:父类是用来指定标准的,不能被实例化

class People(Ainmal):
    def speak(self):
        print('say hello')

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

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


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

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

def my_speak(ainmal):
    ainmal.speak()

my_speak(peo1)
my_speak(dog1)
my_speak(pig1)

l=[1,2,3]
s='hello'
t=(1,2,3)

print(l.__len__())
print(s.__len__())
print(t.__len__())

def len(obj):
    return obj.__len__()
print(len(l))
print(len(s))
print(len(t))#t.__len__()

#python推崇的鸭子类型,只要你叫的声音像鸭子,并且你走路的样子也像鸭子,那你就是鸭子

class Disk:
    def read(self):
        print('dist read')
    def write(self):
        print('dist write')

class Process:
    def read(self):
        print('process read')
    def write(self):
        print('process write')

class File:
    def read(self):
        print('file read')
    def write(self):
        print('file write')

obj1=Disk()
obj2=Process()
obj3=File()

obj1.read()
obj2.write()

猜你喜欢

转载自blog.csdn.net/qq_35540539/article/details/80836492