【发布时间】:2025-12-02 05:55:02
【问题描述】:
假设我有这样的事情:
. ├── 运行.py └── 测试 ├── __init__.py ├── 型号 │ ├── foo │ │ ├── baby.py │ │ └── __init__.py │ ├── __init__.py │ └── user.py └── start.py运行.py
from test import start
start.py
from .models import user
user.py
from . import foo
print(foo.baby.Baby)
宝贝.py
Baby = "I am a baby"
现在,当您运行 run.py 文件时...
>>> python run.py
... traceback ...
AttributeError: 'module' object has no attribute 'baby'
但是,如果您像这样更改start.py:
from .models.foo import baby
from .models import user
一切正常。
当start.py 中的baby 模块未早先加载时,foo 包对象没有对其的引用(foo.baby.Baby 抛出了AttributeError)。但是当我在start.py 中加载baby 模块时,foo 包对象自动获得了对babymodule 的引用。
谁能解释一下这是如何工作的?
【问题讨论】:
标签: python python-3.x python-module