1 Star 0 Fork 1

Jeffrey / IdiomaticPython

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
section3.1.md 2.06 KB
一键复制 编辑 原始数据 按行查看 历史
jeffrey 提交于 2018-01-15 11:22 . section 3

3.1 模块和包

Python语言支持面向对象编程,不过不是必须要使用的。很多有经验的Python程序员相对较少使用类和多态。有很多这方面的原因。

大部分存储在类中的属性可以用列表、字典和集合类型来表示。Python有很多优化(设计和实现层面)的内置函数和标准库来处理这些数据。类仅当需要的时候才使用,并且永远不要超过出API边界。

在Java语言中,类是封装的基本单元。每个文件都代表一个Java类,不管解决的问题是否有意义。如果有个方便的工具函数,那么将会封装到Utility类中。即使我们不能直观地理解Utility对象代表什么意思,也没有关系。当然,我夸大了,但重点是明确的,一旦习惯把所有内容封装到一个类中,就会很容易把这个概念带到其他的编程语言。

在Python中,一组相关的函数和数据通常封装在模块中。如果使用MVC的WEB框架来构建"Chirp"应用,可能会存在一个包含模型、视图和控制器的chirp包。如果"Chirp"是一个特别宏大的项目,代码库很大,这些模块可以很容易自己打包。 控制器包可能有一个持久性模块和处理模块。除了直觉上属于控制者之外,这些都不需要以任何方式相关。

如果所有这些模块都变成了类,那么互操作性立即就会变成了一个问题。 我们必须认真准确地确定我们将要对外公开的方法,状态如何更新,以及类支持的测试方法。不像一个字典或列表,我们必须编写代码来处理和持久性化对象。

请注意,在"Chirp"的描述中,没有任何需要使用类的地方。简单的导入语句使代码共享和封装变得简单。将状态显式作为参数传递给函数让一切变得松耦合。系统更容易接收,处理和转换数据流。

可以确切的说,类可能是更清晰或自然地表示一种东西的方式。在许多情况下,面向对象编程是一个很方便的范例,只是不要让它成为使用的唯一范例。

1
https://gitee.com/zhujf21st/IdiomaticPython.git
git@gitee.com:zhujf21st/IdiomaticPython.git
zhujf21st
IdiomaticPython
IdiomaticPython
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891