多态:由不同的类实例化得到的对象,调用同一个方法,执行的逻辑不同 即不同的数据有相同的方法或者属性
多态的概念指出了对象如何通过他们共同的属性和动作来操作及访问,而不需要考虑他们具体的类 例如:
1 a = '1234' 2 b = [1,2,3,4] 3 c = (1,2,3,4) 4 print(len(a)) 5 print(len(b)) 6 print(len(c)) 7 输出:、 8 4 9 4 10 4
str() 叫工厂函数
1 class H2o: 2 def __init__(self, name, temperature): 3 self.name = name 4 self.temperature = temperature 5 6 def temp(self): 7 if self.temperature <= 0: 8 print('[%s] 温度太低结成冰' % self.name) 9 elif self.temperature >= 100: 10 print('[%s] 温度太高汽化成水蒸气' % self.name) 11 else: 12 print('[%s] 温度适中成为水' % self.name) 13 14 15 class Water(H2o): 16 pass 17 18 19 class Ice(H2o): 20 pass 21 22 23 class Stream(H2o): 24 pass 25 26 27 def fun(x): 28 x.temp() 29 30 31 w1 = Water('水', 50) 32 s1 = Stream('水蒸气', 120) 33 i1 = Ice('冰', -5) 34 # s1.temp() 35 # w1.temp() 36 # i1.temp() 37 fun(w1) 38 fun(s1) 39 fun(i1) 40 输出: 41 [水] 温度适中成为水 42 [水蒸气] 温度太高汽化成水蒸气 43 [冰] 温度太低结成冰
不同的类经过实例后,可以调用相同的方法。 可以多态的条件 有一个共同的基类
不同的类继承了相同的方法这就是多态, 多态就是继承的一种体现方式
多态实质上是继承的实现细节;那么让多态与封装、继承这两个概率并列,显然是不符合逻辑的。