【1.113】多态--面向对象

什么是多态  由不同的类实例化到的对象  调用同一个方法 执行的逻辑不同

多态与多态性

多态指的是同一种事物的多种状态:水这种事物有多种不同的状态:冰,水蒸气

多态性的概念指出了对象如何通过他们共同的属性和动作来操作及访问,而不需考虑他们具体的类。

冰,水蒸气,都继承于水,它们都有一个同名的方法就是变成云,

但是冰.变云(),与水蒸气.变云()是截然不同的过程,虽然调用的方法都一样

del 删除 

del 字符串

del 数字

 

len(“”)

计算字符串 数字  元组 可迭代序列的长度

len("ssssss")
6
len([1,23,465])
3
len((1,2,3,4))
4
l1=list("abcd")
len(l1)
4
l1.__len__()
4

点 就是调用对象的方法

多态  对象如何通过他们共同的属性和动作来操作及访问,而不需考虑他们具体的类。

list  str pule 等不同对象 调用共同的动作 len 方法  来操作  不考虑列表 字符串 元组他们具体的类

class H2O:
    def __init__(self,name,temperature):
        self.name = name
        self.temperature = temperature
    def turn_ice(self):
        if self.temperature < 0:
            print("while temperature(%s) < 0 ,water become to (%s) "%(self.temperature,self.name))
        elif self.temperature > 100:
            print("while temperature(%s) >= 100, water become to (%s)"%(self.temperature,self.name))
        else:
            print("water is (%s).(temperature=%s) "%(self.name,self.temperature))

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

W1 = Water("water",36)
I1 = Ice("ice",-10)
S1 = Stream("stream",2100)

def fun(obj):
    obj.turn_ice()   #不同类(继承相同父类)的不同对象 调用相同的动作  来操作  结果不一样

fun(W1)
fun(S1)
fun(I1)

# water is (water).(temperature=36)
# while temperature(2100) >= 100, water become to (stream)
# while temperature(-10) < 0 ,water become to (ice)
#看水 冰 水蒸气 是调用相同的方法 turn_ice  而水 冰 他们的类继承了相同父类  



# len("ssssss")
# len([1,23,465])
# len((1,2,3,4))
#看字符串  列表  元组 是调用相同的方法len   而字符串 列表他们也是继承了相同父类  type 只是我们没有看到而已

 

posted @ 2016-05-27 16:31  科学小怪癖  阅读(85)  评论(0)    收藏  举报