Python类在多个文件中的组织可能性?
我习惯于Java的规则,每个文件只能有一个公共类。而Python没有这个限制,我想知道在组织类的时候,最好的做法是什么。
6 个回答
31
我个人喜欢Java的这种做法,原因很简单。把每个类放在单独的文件里,这样可以更方便地重用这些类,因为在查看源代码的时候,类会更容易被看到。如果你把很多类放在一个文件里,其他开发者可能就不容易发现那些可以重用的类,光是浏览项目的目录结构就可能看不出来。因此,如果你觉得你的类有可能被重用,我建议把它放在自己的文件里。
41
因为没有人为设定的限制,所以这完全取决于你能理解的程度。如果你有很多简单又短小的类,而且它们逻辑上是可以归在一起的,那就可以把它们放在同一个文件里。如果你有一些大而复杂的类,或者这些类放在一起没有什么意义,那就每个类一个文件。你也可以选择介于两者之间的方式。随着情况的变化,适时调整你的代码结构。
365
一个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
语句所展现的整体组织结构。