在Java中,代码以包的形式进行结构化,每个类都放在一个单独的文件中。 python中有类似的做法吗?将每个类放在不同的python文件中并相互导入会更好吗?还是我应该将我的代码(所有类)都转储到一个文件中?
答案 0 :(得分:3)
在Java中,代码以包的形式进行结构化,每个类都放在一个单独的文件中。 python中有类似的做法吗?
绝对没有。实际上,Python不会强迫您将所有代码放入类中-普通函数也可以-因此,即使“每个类”的前提也没有道理。
将每个类放在不同的python文件中是否更好
绝对没有-这只会使您的代码难以维护。
还是我应该将代码(所有类)都转储到单个文件中?
两者都不是(除非它是一个很小的应用程序)。您想将代码(函数,类等)重新组合在具有内聚力的,解耦的模块/程序包中,无论如何,这是所有语言的最佳实践。如果您有一个带有域代码,持久性和UI的“完整”应用程序,则可能需要将此作为您的第一级软件包。
答案 1 :(得分:1)
在Python中构建代码时,考虑名称空间(从名称到对象的映射):https://docs.python.org/3/tutorial/classes.html很有用。然后,您可以在模块(包含Python定义和语句的文件)中组织代码(取决于他的复杂性),然后打包(通过使用“点分模块名称”来构造Python模块名称空间的一种方式):https://docs.python.org/3/tutorial/modules.html
答案 2 :(得分:1)
这取决于用例/您要如何构造代码/应用程序。
这是classes文档的第一篇摘录:
与其他编程语言相比,Python的类机制 用最少的新语法和语义添加类。它是一个
C++
和Modula-3
中发现的类机制的混合。蟒蛇 类提供面向对象的所有标准功能 编程:类继承机制允许多个基数 类,派生类可以覆盖其基类的任何方法,或者 类,并且方法可以使用调用基类的方法 一样的名字。对象可以包含任意数量和种类的数据。 作为 对于模块,类具有Python的动态特性是正确的: 它们是在运行时创建的,之后可以进行进一步修改 创造。
基本上在Python中,“一切都是对象” cough cough 包括类。
话虽如此,如果您进一步阅读文档,在某些情况下,您可能希望在同一文件中有多个类,例如exceptions ,因为它们“也是类” “
class ApplicationError(Exception):
pass
class LoadingError(Exception):
pass
class ValidationError(ApplicationError):
pass
可以将类似这样的内容放入errors.py
或者如果您有一个覆盖另一个类的类,例如:
class Dog:
def __init__(self, name, weight):
self.name = name
self.weight = weight
def bark():
return("Bark")
class Chihuahua(Dog):
def bite_ankles():
return("Pain")
类似的内容可以放在一个名为breeds.py
的文件中。
我现在制作的基本上是2个python modules,它们可以将python应用程序分解成小块。
随着程序的变长,您可能需要将其拆分为几个 文件以便于维护。您可能还想使用方便 您在多个程序中编写的功能,但没有复制 每个程序的定义。
Python提供了一种将定义放入文件并在脚本中使用它们的方法 或在解释器的交互式实例中。这样的文件是 称为模块;可以将模块中的定义导入其他模块 模块或进入主模块(您所收集的变量的集合 可以访问在顶层执行的脚本和计算器 模式)。
模块是一个包含Python定义和语句的文件。 文件名是模块名称,后缀.py。
在某些情况下,在一个文件中使用多个类和定义可能会很方便,但这取决于您计划构造项目的方式。当然,您可以将所有代码放入一个文件中,但这很难管理,并且与Zen of Python“可读性计数”相抵触。
答案 3 :(得分:-1)
默认情况下,python不会在代码文件中为每个类创建一个文件。
要为每个类创建单独的文件,每个类的代码应位于单独的文件中
如果两个类是相关的或紧密耦合的,并且客户端代码需要实例化每个,则最好将它们放在同一文件中。
如果一个父类具有许多子类,而子类具有很少的代码,则最好将其放入一个文件中。