首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >组织我的Python项目

组织我的Python项目
EN

Stack Overflow用户
提问于 2008-12-24 17:23:14
回答 4查看 21.4K关注 0票数 46

我正在启动一个Python项目,并期望其中包含20个或更多的类。作为一种好的做法,我想将它们分别放在一个单独的文件中。然而,项目目录很快就会被文件淹没(或者当我这样做的时候)。

如果我将要导入的文件放在文件夹中,则无法再导入该文件。我如何从另一个文件夹导入文件,现在它在文件夹中,我需要以不同的方式引用它包含的类吗?

提前感谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-12-24 17:31:40

在你的项目文件夹中创建一个__init__.py文件,它将被Python当作一个模块来处理。

然后可以使用如下语法导入包目录中的类:

from package import class
import package.class

__init__.py中,您可以创建定义from package import *行为的__all__数组:

# name1 and name2 will be available in calling module's namespace 
# when using "from package import *" syntax
__all__ = ['name1', 'name2'] 

这是way more information than you even want to know about packages in Python

一般来说,学习如何组织大量代码的一个好方法是选择一个流行的Python包,看看他们是如何做到的。首先,我会看看DjangoTwisted

票数 31
EN

Stack Overflow用户

发布于 2008-12-24 17:42:55

“作为一种良好的做法,我希望将它们分别放在一个单独的文件中。”

这实际上不是一个很好的实践。您应该设计包含密切相关类的模块。

作为一个实际问题,没有一个类实际上是完全独立的。通常,类在逻辑上相关的集群或组中出现。

票数 22
EN

Stack Overflow用户

发布于 2008-12-24 17:33:00

Python不会强迫您使用Java令人讨厌的每个文件一个类的样式。事实上,将每个类放在单独的文件中甚至不被认为是一种好的风格,除非它们很大。(如果它们很大,那么您可能无论如何都必须进行重构。)相反,您应该在模块中对类似的类和函数进行分组。例如,如果您正在编写GUI计算器,您的包布局可能如下所示:

/amazingcalc
   /__init__.py # This makes it a Python package and importable.
   /evaluate.py # Contains the code to actually do calculations.
   /main.py # Starts the application
   /ui.py # Contains the code to make a pretty interface
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/391879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档