【1.92】面向对象设计--3
类 就是把一类事物的相同的特征和动作 整合到一起 就是类
类就是一个抽象的慨念
对象 就是基于类 而创建 的一个具体的事物 (具体存在的)、
也就是 特征 和动作整合到一起的
# 学校类 # 特征: name addr type # 动作:考试 招生 # 嵌套函数 来规定函数变量的 作用域 def school(name,addr,typ): def exam(school): print("%s学校 正在考试" % school["name"]) def zhao_sheng(school): print("%s 学校 %s校区 正在招生" % (school["name"],school["addr"])) def sch_tz(name,addr,type): sch={ "name":name, "addr":addr, "type":type, "exam_test":exam, "zhao_sheng":zhao_sheng } return sch return sch_tz(name,addr,type) s1 = school("清华","北京","公立") print(s1) print(s1["name"]) s1["exam_test"](s1) s1["zhao_sheng"](s1) # {'name': '清华', 'addr': '北京', 'type': <class 'type'>, 'exam_test': <function school.<locals>.exam at 0x0188EFA8>, 'zhao_sheng': <function school.<locals>.zhao_sheng at 0x018AE030>} # 清华 # 清华学校 正在考试 # 清华 学校 北京校区 正在招生
# 学校类 # 特征: name addr type # 动作:考试 招生 # 嵌套函数 来规定函数变量的 作用域 def school(name,addr,typ): def sch_tz(name,addr,type): sch={ "name":name, "addr":addr, "type":type, "exam_test":exam, "zhao_sheng":zhao_sheng #def 函数 是不会执行的 只是加载 所以 函数可以写任意的参数 都不会报错 无论在他前面是否定义 } return sch def exam(school): print("%s学校 正在考试" % school["name"]) def zhao_sheng(school): print("%s 学校 %s校区 正在招生" % (school["name"],school["addr"])) return sch_tz(name,addr,type) s1 = school("清华","北京","公立") print(s1) print(s1["name"]) s1["exam_test"](s1) s1["zhao_sheng"](s1) # {'name': '清华', 'addr': '北京', 'type': <class 'type'>, 'exam_test': <function school.<locals>.exam at 0x0188EFA8>, 'zhao_sheng': <function school.<locals>.zhao_sheng at 0x018AE030>} # 清华 # 清华学校 正在考试 # 清华 学校 北京校区 正在招生
编程进化论
1、编程最开始就是无组织无结构 从简单控制流中 按部就班写指令
2、从上述指令提取重复的代码 或者 逻辑 组织到一起 比如函数,便实现了代买的重复利用,
且代码由无结构走向结构化,创建程序的过程变得更加有逻辑性
3、我们定义函数都是独立于函数外定义变量,然后作为参数传递给函数,这意味着:数据与动作是分离的
4、如果我们把数据和动作内嵌到一个结构里面,那么我们就有了一个对象系统(对象就是数据和函数整合)
面向对象设计,就是将一类具体事物的数据和动作 整合到一起
面向对象设计 不会特别要求 面向对象编程语言, 事实上,面向对象设计可以 由纯结构化语言来实现,比如c ,
但是如果想要构造具备对象性质和特点的数据类型就要在程序上下功夫,比如嵌套函数 高阶函数等等
面向对象编程 用定义类 + 实例/对象的方式 去实现面向对象的设计
class 来定义类
浙公网安备 33010602011771号