关于面向对象三大特征: 封装/继承/多态 面向对象设计原则:开闭/单一/倒置,day13
继承:
多个子类在概念上一致的,所以就抽象出一个父类.
多个子类的共性,可以提取到父类中.
在实际开发过程中:
从设计角度讲:先有子,再有父.
从编码角度讲:先有父,再有子.
python 内置函数
1. 判断对象是否属于一个类型
1 # "老师对象" 是 一个老师类型 2 print(isinstance(t01, Teacher)) # True 3 # "老师对象" 不是 一个学生类型 4 print(isinstance(t01, Student)) # Flase 5 # "老师对象" 是 一个人类型 6 print(isinstance(t01, Person)) # True
2.判断一个类型是否属于另一个类型
1 # "老师类型" 不是 一个学生类型 2 print(issubclass(Teacher, Student)) # Flase 3 # "老师类型" 不是 一个学生类型 4 print(issubclass(Teacher, Person)) # True 5 # "人类型" 不是 一个老师类型 6 print(issubclass(Person, Teacher)) # Flase
子类若没有构造函数,使用父类的.
子类若具有构造函数,则必须先调用父类构造函数
super().__init__(name)
继承 -- 设计(1)

"" 继承 -- 设计(1) """ # 需求:老张开车去东北 # 变化: 坐飞机 # 坐火车 # 骑车 # ... # 违反了开闭原则: # 如果增加火车,需要增加"火车类",再修改人类中的go_to方法. class Person: def __init__(self, name): self.name = name def go_to(self, vehicle, str_position): # 如果是汽车 if type(vehicle) == Car: vehicle.run(str_position) # 否则如果是飞机 elif type(vehicle) == Airplane: vehicle.flay(str_position) class Car: def run(self, str_position): print("汽车开到", str_position) class Airplane: def flay(self, str_position): print("飞机飞到", str_position) p01 = Person("老张") c01 = Car() a01 = Airplane() p01.go_to(c01, "东北") p01.go_to(a01, "东北")
继承 -- 设计(2)

1 """ 2 继承 -- 设计(2) 3 练习:exercise03.py 4 """ 5 6 7 # 需求:老张开车去东北 8 # 变化: 坐飞机 9 # 坐火车 10 # 骑车 11 # ... 12 13 class Vehicle: 14 """ 15 交通工具,代表所有具体的交通工具(火车/飞机..) 16 继承:隔离子类变化,将子类的共性(坐/飞..)提取到父类(运输)中. 17 """ 18 19 def transport(self, str_position): 20 # 因为父类太过于抽象,所以写不出方法体. 21 pass 22 23 24 # 客户端代码,用交通工具。 25 class Person: 26 def __init__(self, name): 27 self.name = name 28 29 def go_to(self, vehicle, str_position): 30 # 多态:调用父,执行子. 31 # 调用的是交通工具的运输方法 32 # 执行的是飞机的运输方法或者汽车的运输方法 33 vehicle.transport(str_position) 34 35 36 # -------以上是架构师完成的--以下是程序员完成的----- 37 class Car(Vehicle): 38 def transport(self, str_position): 39 print("汽车开到", str_position) 40 41 42 class Airplane(Vehicle): 43 def transport(self, str_position): 44 print("飞机飞到", str_position) 45 46 47 p01 = Person("老张") 48 c01 = Car() 49 a01 = Airplane() 50 p01.go_to(c01, "东北") 51 p01.go_to(a01, "东北")
体会:面向对象三大特征:
封装/继承/多态
面向对象设计原则:
开闭/单一/倒置

浙公网安备 33010602011771号