3.1.5 多态与多态性,鸭子类型

#多态:同一类事物的多种形态
import abc
class Animal(metaclass=abc.ABCMeta): #同一类事物:动物
@abc.abstractmethod
def talk(self):
pass

class People(Animal): #动物的形态之一:人
def talk(self):
print('say hello')

class Dog(Animal): #动物的形态之二:狗
def talk(self):
print('say wangwang')

class Pig(Animal): #动物的形态之三:猪
def talk(self):
print('say aoao')

class Cat(Animal):
def talk(self):
print('say miamiao')

#多态性:指的是可以在不考虑对象的类型的情况下而直接使用对象
peo1=People()
dog1=Dog()
pig1=Pig()
cat1=Cat()

# peo1.talk()
# dog1.talk()
# pig1.talk()

def func(animal):
animal.talk()


func(peo1)
func(pig1)
func(dog1)
func(cat1)

#鸭子类型:只要有相似的就行,不需要继承。就可以定义公共的接口。如len
#序列类型:列表list,元祖tuple,字符串str

l=list([1,2,3])
t=tuple(('a','b'))
s=str('hello')


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


# def len(obj):
# return obj.__len__()


print(len(l))
print(len(t))
print(len(s))

猜你喜欢

转载自www.cnblogs.com/beallaliu/p/9113244.html