一、多态、继承
class H2O:
def __init__(self,name,temp):
self.name=name
self.temp=temp
def turn_ice(self):
if self.temp<0:
print("H2O在温度低于0度环境下,变成%s"%self.name)
elif self.temp<100 and self.temp>=0:
print("H2O在常温下,是%s"%self.name)
elif self.temp>=100 :
print("H2O在温度过于高的情况下,变为%s"%self.name)
class Water(H2O):
pass
class Ice(H2O):
pass
class Steam(H2O):
pass
w1=Water("water",25)
i1=Ice("ice",-2)
s1=Steam("steam",101)
def func(obj):
obj.turn_ice()
func(w1)
func(i1)
func(s1)
二、封装:
封装,即:分清内部、外部;(下面的例子,主要是说明下面补充的知识,与封装关系不大)
补充:1.在类class里面,凡是以单下划线开头的属性,python约定,使用者不应该在外部使用;但是,实际你如果使用了,也不会报错;这是约定;
2.在类class里面,凡是以双下划线开头的属性,都会被自动重命名;
class H2O:
_star="earth"
__star1="earth"
def __init__(self,name,temp):
self.name=name
self.temp=temp
def turn_ice(self):
if self.temp<0:
print("H2O在温度低于0度环境下,变成%s"%self.name)
elif self.temp<100 and self.temp>=0:
print("H2O在常温下,是%s"%self.name)
elif self.temp>=100 :
print("H2O在温度过于高的情况下,变为%s"%self.name)
water=H2O("水",20)
print(water._star)
print(H2O.__dict__)
print(water._H2O__star1)
三、重构
或者:这样就避免写父类的名称