我已经习惯了Java模型,你可以有每个文件包含一个公共类。 Python没有这个限制,我想知道什么是组织类的最佳实践。
Answer 1:
Python文件被称为“模块”,它的组织你的软件,它使“意义”的一种方式。 另一个是一个目录,名为“包”。
模块是可以有一个或两打密切相关的类明显的事情。 诀窍是,一个模块是你将导入,并且您需要进口是完全明智的人谁可以读,维护和扩展您的软件。
规则是这样的 : 一个模块的重用单位 。
你不能轻松地重用一个类。 你应该能够重复使用的模块没有任何困难。 在您的图书馆(和一切你下载并添加)一切都可以是一个模块或组件模块。
比如,你工作的东西,阅读电子表格,做一些计算,结果加载到数据库中。 你想干什么你的主要程序是什么样子?
from ssReader import Reader
from theCalcs import ACalc, AnotherCalc
from theDB import Loader
def main( sourceFileName ):
rdr= Reader( sourceFileName )
c1= ACalc( options )
c2= AnotherCalc( options )
ldr= Loader( parameters )
for myObj in rdr.readAll():
c1.thisOp( myObj )
c2.thatOp( myObj )
ldr.laod( myObj )
想想导入为组织在概念或块代码的方式。 到底有多少类在各进口无所谓。 要紧的是,你与你的描绘整个组织import
语句。
Answer 2:
由于没有人为限制,这实际上取决于什么是可以理解的。 如果你有很多逻辑上组合在一起相当短的,简单的类的,折腾了一堆“时间。 如果你有大的,复杂的类或类是没有意义的为一组,每去一个类文件。 或选择介于两者之间。 重构作为事情的变化。
Answer 3:
我碰巧喜欢,原因如下Java模型。 在一个单独的文件放置每个类的制作班更容易看到浏览源代码时提高可重用性。 如果你有一堆的组合成一个单一的文件中的类,它可能不是很明显给其他开发者,有阶级存在,可以简单地通过浏览该项目的目录结构中重复使用。 因此,如果你认为你的类可能被重用,我会把它放进自己的文件。
Answer 4:
这完全取决于项目有多大,这些类有多长,如果他们从其他文件中使用等。
例如我经常使用一系列的类数据抽象-所以我可以具有4或5类,可能仅1线长( class SomeData: pass
)。
这将是愚蠢的每一种分成单独的文件-但因为他们可以从不同的文件中使用,把所有这些在一个单独的data_model.py
文件将是有意义的,所以我可以做from mypackage.data_model import SomeData, SomeSubData
如果你有大量的代码在它的一类,可能与某些功能,只有它使用,这将是这个类和辅助性的功能分割成一个单独的文件是一个好主意。
您应该构建他们,这样你就from mypackage.database.schema import MyModel
,而不是from mypackage.email.errors import MyDatabaseModel
-如果你在哪里有意义进口的东西,这些文件都没有行数万长,正确组织它。
在Python的模块文件对组织包一些有用的信息。
Answer 5:
我发现自己分裂的事情,当我得到恼火文件的量纲,当关联的理想结构开始自然产生。 通常,这两个阶段似乎不谋而合。
它可以是非常恼人的,如果你太早分裂的事情了,因为你开始认识到,一个完全不同的结构的顺序是必需的。
在另一方面,当任何的.java或.py文件越来越多约700行,我开始生气一直试图记住“特定位”是。
import语句中的Python / Jython的循环依赖似乎也发挥了作用:如果你尝试的语言似乎迫使你组的事情太多了合作的基本构建块分割成单独文件这一“限购” /“不完美”,或许在相当一个明智的方式。
至于分成包,我真的不知道,但我会说可能是烦恼和快乐结构出现的同样的规则工作在模块化的各个层面。
Answer 6:
我会说把尽可能多的参加可以在该文件中进行逻辑分组,而不使其过大而复杂。