我有一个存放所有.py文件的目录。

bin/
   main.py
   user.py # where class User resides
   dir.py # where class Dir resides

我想在main.py中使用user.py和dir.py中的类。 如何将这些Python类导入main.py? 此外,如果User .py在子目录中,我如何导入User类?

bin/
    dir.py
    main.py
    usr/
        user.py

当前回答

我不能为顶部的答案提交编辑,所以根据上面评论中给出的一些指针,另一件要尝试的事情是:

from subfolder.MyClassFile import MyClass

就是这样。只要记住在我们的子文件夹中有一个__init__.py空文件。

仅供参考,如果你的结构是这样的,解决方案是有效的:

your_project/
    __ini__.py
    main.py
    subfolder/
        __init__.py
        MyClassFile.py  <-- You want this

MyClassFile.py包含MyClass类。

其他回答

如果您不想将函数和类与您的模块混合,您可以导入模块并通过其名称访问它

import util # imports util.py

util.clean()
util.setup(4)

或者可以将函数和类导入到代码中

from util import clean, setup
clean()
setup(4)

您可以使用wildchar *将该模块中的所有内容导入到代码中

from util import *
clean()
setup(4)

如果你在同一个文件夹中有filename.py,你可以像这样轻松地导入它:

import filename

我使用的是python3.7

Python 2

在与这些文件相同的目录中创建一个名为__init__.py的空文件。这将向Python表示“可以从此目录导入”。

那就…

from user import User
from dir import Dir

如果文件在子目录中,同样适用-在子目录中也放入__init__.py,然后使用点表示法的常规导入语句。对于每一层目录,都需要添加到导入路径中。

bin/
    main.py
    classes/
        user.py
        dir.py

如果目录名为“classes”,那么你会这样做:

from classes.user import User
from classes.dir import Dir

Python 3

和前面一样,但是模块名前面加了。如果不使用子目录:

from .user import User
from .dir import Dir

如果user.py和dir.py不包括类,那么

from .user import User
from .dir import Dir

不起作用。然后您应该导入as

from . import user
from . import dir

在main.py中:

from user import Class

其中Class是要导入的类的名称。

如果你想调用Class的一个方法,你可以使用:

Class.method

注意,在同一目录下应该有一个空的__init__.py文件。