您现在的位置是:主页 > news > 房屋设计找什么公司/游戏优化大师有用吗
房屋设计找什么公司/游戏优化大师有用吗
admin2025/5/5 2:41:59【news】
简介房屋设计找什么公司,游戏优化大师有用吗,网站建设项目背景,览心文档小程序怎么用面向过程 与 面向对象 编程范式 编程范式是指 用特定的语法数据结构算法组成的代码告诉计算机如何执行任务的过程 两种最重要的编程范式分别为 面向过程编程(PP) 和 面向对象 编程(OOP) 面向过程编程 例子 数据库备份 分三步,连接数据库, 备份数据库,测试备份文件可用性 defdb_…
面向过程 与 面向对象
编程范式
编程范式是指 用特定的语法+数据结构+算法组成的代码告诉计算机如何执行任务的过程
两种最重要的编程范式分别为 面向过程编程(PP) 和 面向对象 编程(OOP)
面向过程编程
例子 数据库备份 分三步,连接数据库, 备份数据库,测试备份文件可用性
defdb_conn():
连接数据库defdb_backup(db,name):
导出数据库
备份打包 转移目录defdb_backup_test():
测试是否备份成功if __name__ == '__main__':
db_conn()
db_backup(数据库)
db_backup_test()
明显缺点:耦合性太高不易于迭代与维护
面向对象编程
OOP编程时 利用 类 和 对象 来创建模型 对 真实世界进行描述
核心特性:
Class 类
类 就是 对一类有相同属性的对象 抽象,蓝图,原型
Object 对象
对象 即为 类 实例化后的实例 一个类必须经过 实例化 才能在程序中调用, 一个类可以实例化多个对象,每个对象有不用的属性 (人有指纹 而指纹都不相同)
Encapsulation 封装
类 对 数据的复制,内部调用 对 外部用户都是透明的 这使类 变成一个容器, 里面包含类的数据和方法
Inheritance 继承
一个类 可以派生出子类 在这个父类里定义的属性 ,方法 自动被子类继承
Polymorphism 多态
多态时 面向对象重要的特性 指一个基类 派生出了不同的子类, 每个子类都继承了同样的方法名的同时又对父类的方法做出了不同的实现
面向对象编程(OOP)
无论用什么范式来编程 都要明确以下原则:
1. 写重复代码 非常低级
2. 写过的代码要经常变动
函数式编程与 OOP的主要区别是 程序更加具有扩展性和易更改
类的基本定义
class Role(object):#定义一个类, class是定义类的语法,Role是类名,(object)是新式类的写法
def __init__(self,name,money=16000): #初始化函数
self.name=name
self.money= money
上面这个额 __init__()叫做构造方法,在类被调用时,这个方法会自动执行,进行初始化动作
其中的 self 举例
r1 = Role('poet',money=8000) #此时 self 相当于r1, Role(r1,'poet',money=8000
在执行上面r1 = Role('poet',money=8000)时 python解释器工作流程:
1. 在内存中开辟一块空间 指向 r1这个变量名
2. 调用 Role这个类 并 执行 __init__() 方法 等价于 Role.__init__(r1,'poet',money=8000)
这样 self.name 就是为了 将值 存入 实例化的的内存空间中
面向对象的2.5大特性
一 封装
封装的本质是 明确内外
面向对象封装的两大特性:
1 将内容封装 (r1 = Role('poet',money=8000) )
python 约定私有是人去识别约定 而不是其他语言的强制不能调用
classRole(object):
_id= 666
__id2 = 777 # 自动重命名_Role__sta
def __init__(self,name,money=16000): #初始化函数
self.name=name
self.money= money
self.id = __id2 # 这样也就区分了内外
r1 = Role('poet',money=8000)
print(Role.__dirt__)
r1._id # 约定私有是人去识别约定
r1._Role__star # 藏的 更深了 直接自动重命名
1单下划线
只要属性是 单 下划线开头 就是一个被隐藏起来的属性 _id = 666
2 双下划线
__id = 666
2 调用封装的内容形式分为两种:
通过对象直接调用
classFOO:def __init__(self,name,age):
self.name=name
self.age=age
obj1= Foo('poet', 18)print(obj1.name) 直接调用 obj1对象的name属性
通过self简介调用被封装的内容
classFOO:def __init__(self,name,age):
self.name=name
self.age=age
def detail():
print(self.name)
obj1= Foo('poet', 18)
obj1.detail() # python会默认将 self 传值 即 obj1.detail(obj1)
对于面向对象的封装来说 就是使用构造方法将内容封装到对象中, 然后通过 对象直接或者self间接获取被封装的内容
二 继承
继承 就是 改变 和 扩展
所以面向对象的继承来说 其实就是 将多个类共有的方法 提取到 父类中, 子类仅需要 继承父类而不必 一一实现方法
注: 派生类 和 基类 都是 继承 中 子类和 父类的不同叫法而已
多继承:
1.在python中可以 继承多个类, Java C# 只能继承一个类
2. Python继承多个类时遵循两种 找寻方式 深度优先和广度优先
新式类 广度优先
classN1(object):pass
classN2(N1):pass
经典类 深度优先
classC1:pass
classC2(C1):pass
0.5 多态
多态实际上是依附于继承的两种含义 "改变" 和"扩展" 本身意味着必须有机制去自动选用你改变/扩展过的版本
一般情况下python开发中, 全部使用 面向对象 或 面向对象和函数式混用
掌握面向对象 设计利器 : 领域建模 领域建模 领域建模
1. 发觉重要的业务领域概念
2. 建立业务领域概念之间的关系