协慌网

登录 贡献 社区

如何在同一目录或子目录中导入类?

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

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

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

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

答案

的 Python 2

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

然后做...

from user import User
from dir import Dir

如果文件位于子目录中,则也是如此 - 将__init__.py放入子目录中,然后使用带点符号的常规 import 语句。对于每个级别的目录,您都需要添加到导入路径。

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

我刚刚了解到(感谢martineau 的评论),为了从同一目录中的文件导入类,您现在将使用 Python 3 进行编写:

from .user import User
from .dir import Dir

在您的main.py

from user import Class

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

如果要调用Class的方法,则可以使用以下方法调用它:

Class.method

请注意,在同一目录中应该有一个空的__init__.py