第53天python学习面向对象多态

#多态:是有继承来的
#多态:由不同的类实例化得到的对象,调用一个方法,执行的逻辑不同
#多态的概念:指出了对象如何通过他们共同的属性和动作来操作及访问,而不需要考虑他们具体的类
#多态是反映运行时候的一种情况,python本身就是一种多态
#python本身就是一种多态代码例子如下:
#我们经常看到的执行情况
# li=[1,2,4,9]
# print(len(li))
# str="asdlasjdlas"
# print(len(str))
#
# #python时间运行情况
# li=[1,2,4,9]
# print(li.__len__())
# str="asdlasjdlas"
# print(str.__len__())

#li 和 str虽然不是相同的对象,但是可以调用方法__len__方法

#多态的例子
class H2O:
def __init__(self,name,shuizhuantai):
self.name=name,
self.shuizhuantai=shuizhuantai

def turn_ice(self):
if self.shuizhuantai<0:
print("[%s]温度太低结冰了"%self.name)
elif self.shuizhuantai>0 and self.shuizhuantai<100:
print("[%s]液化成水"%self.name)
elif self.shuizhuantai>100:
print("[%s]温度太高变为水蒸气"%self.name)

class Water(H2O):
pass
class Ice(H2O):
pass
class Steam(H2O):
pass

#实例化
W1=Water("水",30)
I= Ice("冰",-24)
S=Steam("水蒸气",200)

#水不同形态但是他可以调用相同方法,执行结果不一样。。。。到这一步才体现多态的意图。不调用就没有意思
# W1.turn_ice()
# I.turn_ice()
# S.turn_ice()

#定义一个统一的接口
def fun(obj):
obj.turn_ice()

fun(W1)
fun(I)
fun(S)