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

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

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

我想在main.py中使用user.pydir.py中的
我如何将这些Python类导入到main.py中
此外,如果user.py位于子目录中,如何导入类User

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

Python 2

在与文件相同的目录中创build一个名为__init__.py的空文件。 这将意味着Python可以从这个目录导入“。

那就做…

 from user import User from dir import Dir 

如果这些文件位于子目录中,也是如此 – 将__init__.py放在子目录中,然后使用常规导入语句和点符号。 对于每个级别的目录,都需要添加到导入path。

 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文件。

为了使它更容易理解:

第1步:让我们去一个目录,所有将被包括在内

 $ cd /var/tmp 

第2步:现在让我们做一个class1.py文件,它有一个类名称Class1与一些代码

 $ cat > class1.py <<\EOF class Class1: OKBLUE = '\033[94m' ENDC = '\033[0m' OK = OKBLUE + "[OK]: " + ENDC EOF 

第3步:现在让我们做一个class2.py文件,它有一个类名为Class2的代码

 $ cat > class2.py <<\EOF class Class2: OKBLUE = '\033[94m' ENDC = '\033[0m' OK = OKBLUE + "[OK]: " + ENDC EOF$ touch main.py 

第4步:现在让我们做一个main.py将被执行一次从2个不同的文件使用Class1和Class2

 $ cat main.py """this is how we are actually calling class1.py and from that file loading Class1""" from class1 import Class1 """this is how we are actually calling class2.py and from that file loading Class2""" from class2 import Class2 print Class1.OK print Class2.OK 

第5步:苹果咬

 $ python main.py will now use class1 and class2 

你可以导入模块,并通过它的名字访问,如果你不想混合你的function和类

 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) 
 from user import User from dir import Dir 

太简短了,创build一个文件__init__.py是类的目录,然后将其导入到您的脚本,如下所示

 from classes.myscript import *