全网最适合入门的面向对象编程教程:28 类和对象的Python实现-Python编程原则、哲学和规范大汇总
扫描二维码
随时随地手机看文章
摘要:
本文主要介绍了在使用Python进行面向对象编程时,Python异常处理的原则-“请求谅解,而非许可”,以及软件设计和Python的编程原则,同时介绍了PEP8规范。
文档和代码获取:
本文档主要介绍如何使用 Python 进行面向对象编程,需要读者对 Python 语法和单片机开发具有基本了解。相比其他讲解 Python 面向对象编程的博客或书籍而言,本文档更加详细、侧重于嵌入式上位机应用,以上位机和下位机的常见串口数据收发、数据处理、动态图绘制等为应用实例,同时使用 Sourcetrail代码软件对代码进行可视化阅读便于读者理解。
正文
Python异常处理原则“请求谅解,而非许可”
我们可能不难发现异常处理完全可以用if...elif...else 结构来完成,那为什么还要使用异常呢?实际上,Python程序员通常秉持着“请求谅解,而非许可”的原则,即他们首先执行代码,然后解决出现的错误。另一种与之相反的“三思而后行”的原则,实际上恰恰相反。
这样做有很多理由,但最主要的一点是,避免不必要的CPU资源消耗在检查极少出现的情况上。因此,对于极少数的例外情况,使用异常处理是明智之举。进一步探讨这一点,我们可以发现异常处理的语法在流程控制中同样非常有效。就像if语句一样,异常可以用于决策、分支和信息传递。在Python代码中,面对可能出现的错误情况,相比于各种各样的判断,使用异常处理结构更容易阅读和维护。
软件设计的六大原则
-
开放封闭原则(Open-Closed Principle, OCP)
-
软件实体(类、模块、函数等)应对扩展开放,对修改关闭
-
通过抽象和继承等机制实现
-
里氏替换原则(Liskov Substitution Principle, LSP)
-
子类可以透明地替换父类使用
-
子类与父类的参数和返回值应一致
-
依赖倒置原则(Dependency Inversion Principle, DIP)
-
高层模块不应依赖低层模块,二者都依赖抽象
-
抽象不应依赖细节,细节应依赖抽象
-
接口隔离原则(Interface Segregation Principle, ISP)
-
客户端不应依赖它不需要的接口
-
接口应保持单一和最小粒度
-
迪米特法则(Law of Demeter, LoD)
-
一个软件实体应当尽可能少地与其他实体发生相互作用
-
高内聚,低耦合
-
单一职责原则(Single Responsibility Principle, SRP)
-
一个类应该仅有一个引起它变化的原因
-
职责应该明确,避免重复
Python六大编程原则
-
KISS (Keep It Simple, Stupid)
-
保持代码简单明了,尽量避免复杂的设计
-
简单易懂的代码更容易编写、维护和调试
-
DRY (Don't Repeat Yourself)
-
避免重复代码,利用函数、模块等特性进行抽象和封装
-
减少重复劳动,提高编码效率
-
Pythonic
-
充分利用 Python 的语法特性和标准库
-
遵循 PEP 8 等 Python 编码规范,编写优雅、高效的代码
-
Zen of Python
-
Beautiful is better than ugly.
-
Explicit is better than implicit.
-
Simple is better than complex.
-
Complex is better than complicated.
-
Flat is better than nested.
-
Sparse is better than dense.
-
Readability counts.
-
Special cases aren't special enough to break the rules.
-
Although practicality beats purity.
-
Errors should never pass silently.
-
Unless explicitly silenced.
-
In the face of ambiguity, refuse the temptation to guess.
-
There should be one-- and preferably only one --obvious way to do it.
-
Although that way may not be obvious at first unless you're Dutch.
-
Now is better than never.
-
Although never is often better than right now.
-
If the implementation is hard to explain, it's a bad idea.
-
If the implementation is easy to explain, it may be a good idea.
-
Namespaces are one honking great idea -- let's do more of those!
-
Python is designed to be readable, and, well, Pythonic.
-
遵循 Python 的 20 条设计哲学原则,如"美胜于丑"、"明确胜于隐晦"等
-
体现 Python 崇尚简单、优雅的理念
-
Testing Is Important
-
重视测试驱动开发,编写全面的单元测试和集成测试
-
确保代码质量,方便重构和维护
-
Batteries Included
-
充分利用 Python 丰富的标准库和第三方库
-
减少重复造轮子,提高开发效率
PEP8规范
PEP 8 是 Python 编程的事实标准代码风格指南,其主要内容包括:
-
命名约定
-
变量、函数、模块使用小写字母加下划线
-
类名使用驼峰式命名
-
常量全部大写
-
受保护的实例属性以单个下划线开头
-
私有的实例属性以两个下划线开头
-
缩进和空白
-
使用 4 个空格作为缩进单位
-
顶层函数和类定义之间空两行
-
二元运算符两侧各加一个空格
-
导入风格
-
每个 import 语句独占一行
-
导入顺序为:标准库、第三方库、自定义库
-
行长限制
-
每行不超过 79 个字符
-
如果超出可以使用括号换行
-
注释和文档化
-
使用英文编写注释和文档
-
函数使用 docstring 描述
-
其他建议
-
不要使用制表符进行缩进
-
避免使用单字母变量名
-
慎用from module import *
PEP 8 的目的是通过一致的代码风格来提高代码的可读性和可维护性。遵守这些约定可以让 Python 代码更加 Pythonic。





