Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python——应用程序的结构_Python_Import_Directory Structure - Fatal编程技术网

Python——应用程序的结构

Python——应用程序的结构,python,import,directory-structure,Python,Import,Directory Structure,早上好 有一个python应用程序我一直在工作 目前它只包含几个文件,但随着它变得越来越大,我正在创建越来越多的文件,并且我正在创建的主要python文件的顶部 import url_thread import task_database import xxxx import yyyy 今天我将要增加另一个类,这是另一个导入 有没有办法将这些py文件粘贴到文件夹中,然后只导入类/* 我有没有更好的办法 更多,pythonic?您可以制作一个包并从该包导入:从mypackage导入*是的,您可以

早上好

有一个python应用程序我一直在工作

目前它只包含几个文件,但随着它变得越来越大,我正在创建越来越多的文件,并且我正在创建的主要python文件的顶部

import url_thread
import task_database
import xxxx
import yyyy
今天我将要增加另一个类,这是另一个导入

有没有办法将这些py文件粘贴到文件夹中,然后只导入类/*

我有没有更好的办法


更多,pythonic?

您可以制作一个包并从该包导入:
从mypackage导入*

是的,您可以按要求执行,但不建议这样做

您可以创建一个包含所有模块的名称空间,然后通过导入所有内容来污染名称空间:

from foo import *

。。。或者更好的方法是创建一个结构良好的模块包,然后根据需要显式导入它们。

不要听人们说的所有关于“名称空间污染”的东西。如果你方便(我相信是的话),就从类导入*<代码> >,但是考虑在你的包中使用。

确切地说,以下文件夹结构可以做到这一点:

classes/
|-- class1.py
|-- class2.py
`-- __init__.py
添加文件
classes/\uuuu init\uuuu.py
将创建包。看起来是这样的:

from class1 import Class1
from class2 import Class2

__all__ = ["Class1", "Class2"]
请注意
\uuuu all\uuuu
中类名周围的引号

然后,您可以在任何脚本中使用该包:

>>> from classes import *
>>> Class1
<class classes.class1.Class1 at 0xb781c68c>
>>> Class2
<class classes.class2.Class2 at 0xb781c6ec>
>>> dir()
['Class1', 'Class2', '__builtins__', '__doc__', '__name__', '__package__']
>>从类导入*
>>>第一类
>>>类别2
>>>目录()
['Class1'、'Class2'、'uuuuu内置物'、'uuuuu文档'、'uuuuu名称'、'uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

非常简单。

注意:这将加载
\uuuu init\uuu
并从那里导入。另外,请注意,
import*
有。您知道您可以在一条线上进行多个导入吗?i、 e.
导入url\u线程、任务\u数据库、xxxx、yyyy
但一般来说,请参见下面人们关于制作包和整齐导入的说明。避免从…使用
。。。导入*
除非确实需要。此外,每个模块可以有多个类!以防你不知道。