软件目录结构规范
目标:
- 提高可读性; - 提高可维护性;
- 常见结构
Demo/
|-- bin/ #存放项目的一些可执行文件
| |-- demo #可执行程序,启动demo调main.py
|
|-- demo/ #存放项目所有源码,源码中所有模块、包都在此处
| |-- tests/ #存放单元测试代码
| | |-- __init__.py
| | |-- test_main.py
| |
| |-- __init__.py #空文件,有这个文件就是包,没有就是目录
| |-- main.py #程序主入口
|
|-- docs/ #用于存放一些文档
| |-- conf.py
| |-- abc.rst
|
|--conf/ #配置文件目录
|
|-- setup.py #安装、部署、打包的脚本
|-- requirements.txt #依赖关系,需要依赖的文件,用于存放软件依赖的外部Python包列表
|-- README #项目说明文件
README
包含内容:- 项目简介
- 功能特性
- 环境依赖
- 部署步骤
- 目录结构描述
- 版本内容更新
- 常见问题说明
模块及包导入
import
本质是路径搜索和搜索路径,导入模块就是把Python
文件解释一遍 ,导入包的本质是执行该包下的__init__.py
文件;
面向对象
- 编程范式:实现一个任务有不同方式,对这些不同编程方式的特点进行归纳总结出的编程方式类别称为编程范式,最重要的是面向对象编程和面向过程编程;
Class
类:对一类具有相同属性的对象的抽象集合;特性:
- 封装:将实现功能的细节不对外公开; - 继承:代码的重用,分为单继承和多继承; - 多态:允许将父对象设置为一个或多个子对象相等的技术,是为了保证类在继承和派生的时候使用族谱中任一类的某一属性时的正确调用,即就是一种接口,多种实现;
- 析构函数:
def __del__(self):
实例释放、销毁时自动执行的函数,常用于一些扫尾工作,例如关闭数据库连接,打开的临时文件等; - 私有属性与方法:在定义的时候在属性或方法名前加上两道下划线
__
; - 经典类与新式类的继承顺序:
Python3.x
中经典类和新式类都是广度优先继承,Python2.x
中经典类是深度优先,新式类时广度有限继承,新式类:class Demo(object)
; - 静态方法:名义上归类管理,实际与类无关,无法访问类或实例中的属性;
- 类方法:只能访问类变量,不能访问实例变量;
- 属性方法:把一个方法变成一个静态属性,隐藏实现细节;
- 反射:通过字符串映射,
hasattr(obj, attr_name)
:判断一个对象里是否有对应字符串的方法映射,getattr(obj, attr_name)
:根据字符串去获取对象中对应方法的内存地址,setattr(obj, 'str', func2)
:给对象添加新的属性,delattr(obj,attr_name)
:删除对象的属性;
异常处理
- 格式:
try:
code
except except1:
code
except except2:
code
...
except Exception:
code
- 抓错误的时候一定从小的开始抓起,先抓子集,再抓总集,一般不建议一 开始直接抓错误总集;
欢迎关注微信公众号:村雨1943;创作不易,未经同意,转载请注明出处~