#多态:同一类事物的多种形态
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))