什么是多态:
多态指的是一类事物有多种形态。
水有多种形态:液态(水),固态(冰),汽态(水蒸气)
import abc
class WaterType(metaclass=abc.ABCMeta):
@abc.abstractmethod
def info(self):
pass
class Yetai(WaterType):
def info(self):
print('我是液态(水)')
class Gutai(WaterType):
def info(self):
print('我是固态(冰)')
class Qitai(WaterType):
def info(self):
print('我是汽态(水蒸气)')
y = Yetai()
y.info()
g = Gutai()
g.info()
q = Qitai()
q.info()
'''
我是液态(水)
我是固态(冰)
我是汽态(水蒸气)
'''
多态性:
我的理解是:不同的对象执行相同的函数,产生不同的行为。
python 中len()举例:
str1 = 'abcde'
list1 = [1,'a','s',2]
tuple1 = (1,2,3)
# 三个不同的类型执行相同的方法,返回不同的行为
print(str1.__len__())
print(list1.__len__())
print(tuple1.__len__())
多态实现len
class MyObject:
def __init__(self,data):
self.data = data
def lens(self):
count = 0
for i in self.data:
count += 1
return count
class Str(MyObject): # 继承父类
def __init__(self,data):
super().__init__(data) # 调用父类方法
def lens(self):
return super().lens() # 调用父类方法
class List(MyObject):
def __init__(self,data):
super().__init__(data)
def lens(self):
return super().lens()
class Tuple(MyObject):
def __init__(self,data):
super().__init__(data)
def lens(self):
return super().lens()
def len(obj):
return obj.lens()
s = Str('aaa')
l = List([1,2,3])
t = Tuple((1,2,))
print(len(s))
print(len(l))
print(len(t))
'''
结果:
3
3
2
'''