我有一个存放所有.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

当前回答

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

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)

其他回答

太简单了, 创建一个文件__init__.py是类目录,然后像下面这样将它导入到你的脚本中(导入所有大小写)

from classes.myscript import *

只导入选定的类

from classes.myscript import User
from classes.myscript import Dir

Python 3


相同的目录中。

导入文件:log.py

导入类:SampleApp()。

import log
if __name__ == "__main__":
    app = log.SampleApp()
    app.mainloop()

or

目录是最基本的。

导入文件:log.py。

导入类:SampleApp()。

from basic import log
if __name__ == "__main__":
    app = log.SampleApp()
    app.mainloop()

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

Python3

use

from .user import User inside dir.py file

and

use from class.dir import Dir inside main.py
or from class.usr import User inside main.py

像这样

# My Python version: 3.7
# IDE: Pycharm 2021.1.2 Community

# Have "myLib" in folder "labs":

class Points:
    def __init__(self, x = 0, y = 0):
        self.__x = x
        self.__y = y
    def __str__(self):
        return f"x = {self.__x}, y = {self.__y}"

# Have "myFile" in (same) folder "labs":

from myFile import Point

p1 = Point(1, 4)
p2 = Point(1, 4)
print(f"p1: {p1}, p2: {p2}")

# Result:
# p1: x = 1, y = 4, p2: x = 1, y = 4

# Good Luck!