欢迎光临散文网 会员登陆 & 注册

python笔记(一): 面向对象

2023-03-03 23:53 作者:石城城  | 我要投稿

C语言基础语法(多次执行一次编译, 面向过程, 显式声明数据类型), 个人感觉如果不会不影响入门python


a.语言特点

  1. 解释型语言(多次执行多次解释)

  2. 面向对象语言(万物皆对象)

  3. 动态类型语言(不声明数据类型)

b.对象和类

类: 描述具有相同特征(属性)和行为(方法)对象的抽象定义(对象的模版)

对象: 就是某个类的具体实现(类的实例)

二者关系: 从对象抽象得到类, 从类实例化得到对象

万物皆对象

整数是int类对象, 小数是float类对象, 函数function类对象, 类是type对象

不同对象都通过标识符命名

对象有什么用呢~

c.python实现软件

使用python实现软件时:

应该达到健壮性, 适配性, 重用性的目标

  1. 健壮性: 输入预期输入能产生对应输出, 并有能力处理异常输入

  2. 适配性: 适应硬件环境操作系统平台变化

  3. 重用性: 相同代码可以在不同系统不同程序中使用

并且遵循模块化, 抽象, 封装的原则

  1. 模块化就是软件系统的不同组件需要分成独立功能单元的组织原则. 好处是: 方便测试和调试, 方便bug跟踪修改, 有利于提高软件重用性

  2. 抽象就是提取复杂系统中的基础部分, 清晰命名描述功能. 好处是: 减少代码冗余, 方便代码重用,  提高程序健壮性和重用性

  3. 封装就是保证软件系统组件实现不呈现内部实现细节, 能够保密, 不用过多关心内部实现. 好处是: 方便功能修改, 简化bug修复, 还能同时保证健壮性和适配性

可以遵循设计, 实现, 测调的步骤

  1. 设计: 在“做什么”的基础上,解决软件“怎么做”的问题

  2. 实现: 用代码描述"怎么做"方法

  3. 测调: 验证实现是否正确, 修改不正确的地方

d.python的模块/抽象/封装

  • 模块化: Python中对模块化有利支持就是: 一个模块文件.py封装了一组关系相近的函数与类

  • 抽象: python中对抽象的支持有: 鸭子类型, 假定对象支持某种类型一系列行为, 如果执行过程中没问题, 那么就是这个类型的对象(看到一个鸟, 走起来, 游起来, 叫起来都像鸭子, 那就叫它鸭子); 还可以定义ABC(抽象基类)来封装类的公共方法

  • 封装: 函数封装, 类封装非公有机制(受保护成员_name和私有属性成员__name, 表示成员非公有)


e.实现步骤的问题/方法/工具

设计阶段

问题: 数据分类(有什么对象, 怎么拆分类, 类之间联系, 类需要表示那些行为和动作)

方法: 根据职责划分, 尽量保持独立, 精准定义行为

工具: 类图(类, 特征, 行为, 关联), 伪代码(自然语言+高级程序语言, 描述数据结构与代码)

实现阶段

问题: 代码可读性差, 功能难以理解

方法: 统一代码风格, 编写模块文档, 函数文档, 类文档

工具: PEP(Python Enhancement Proposals), IDE(Integrated Development Environment)

测调阶段

问题: 软件正确性难以保证, 软件错误不好定位

方法: 单元测试和断点调试

工具: pycharm(一种pythonIDE, 支持断点调试), unittest(python单元测试工具)

自学笔记~

如果有错~

期待大佬指出~

感谢帮助提升~


python笔记(一): 面向对象的评论 (共 条)

分享到微博请遵守国家法律