python的应该一个class放一个文件吗?

本人python只学了皮毛。 事情是这样的,用SqlAlchemy定义Model类,官方教程都是写在一坨里的,我按照其它语言的习惯,一个Model的c…
关注者
53
被浏览
79,009

7 个回答

建议题主入乡随俗,既然入了 Python 就别老想着 Java 的写法了,Python 中有的是规范来指导你如何编写优美的代码,人家 Python 的 PEP 规范 就是专门干这个用的。

Python 有一个最大的特点就是对语言风格非常看重,堪称各语言之最。它的创始人 Guido van Rossum 是一个语言风格强迫症患者,他亲自操刀写的 [PEP8] Python 风格指南 就像我们的《小学生守则》一般,入门必看。另外,同样著名的还有 [PEP20] Python 之禅 ,堪称每个 Python 程序猿的八字箴言:

>>> import this
The Zen of Python, by Tim Peters
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 代码简洁而优雅的设计得以延续。Python 语言比其他语言更在意代码风格的统一和美感,甚至连 第三方库的 API 接口都高度统一 。举个例子:

Python 对数据库的支持非常友好,不管是 MySQL、SQL Server、Mongodb、sqlite 等都有对应的第三方库可用: mysql-python pymssql pymongo sqlite ,这些库对数据库的操作有着惊人地相似的 API,如:都包含 connect cursor 等概念,都有 execute executemany fetchone fetchmany 等函数接口,甚至连函数的名称、参数、返回值都一模一样。

怎么会这么统一呢?这是因为 PEP249 已经明确说明了只要编写数据库引擎就要遵循这套规范。这对库的作者以及下游开发者都非常有利,库的作者不必费心巴力地思考 API 应当如何设计,下游开发者也不必因为更换数据库而学习新的接口,即只需要一套代码,想换什么数据库就换什么数据库,你说爽不爽~


好了,开始答题~

首先指出题主一个“入乡不随俗”的地方:Python 的模块名称推荐采用“蛇形命名法”,即首字母 大写,单词以 下划线 连接:

# bad