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

当前回答

# 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!

其他回答

from user import User 
from dir import Dir 

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

from subfolder.MyClassFile import MyClass

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

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

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

MyClassFile.py包含MyClass类。

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

from classes.myscript import *

只导入选定的类

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

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

from .user import User
from .dir import Dir

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

from . import user
from . import dir

对于Python 3+,假设你有这样的结构:

A/
  __init__.py
  bar.py
  foo.py

在__init__.py文件中,可以放入from。import foo

然后你可以在bar文件中导入foo

# A/bar.py
from foo import YourClass

__init__.py文件的目的是包含可选的初始化代码,这些代码在遇到包的不同级别时运行。你放入__init__.py中的所有东西都将在包加载期间初始化。