gpt4 book ai didi

python - 为什么模块不能访问其包的 __init__.py 中声明的属性?

转载 作者:太空狗 更新时间:2023-10-29 23:55:25 25 4
gpt4 key购买 nike

我的包结构如下:

mypackage
__init__.py
mymodule.py

我在 __init__.py 中放置了一些“常量”声明,例如:

DELIMITER='\x01'

但是,mymodule.py 中的代码无法访问 DELIMITER,除非我添加:

from __init__ import *

mymodule.py 文件的顶部。我想我在这里错过了一个概念。是不是在 __init__.py 中声明的任何内容在通过 import 语句访问之前都不会被读入内存?另外,这是放入 __init__.py 文件的典型类型吗?

最佳答案

Python 确实在导入包时运行 __init__.py 中的代码,这允许完成一些初始化。但是,仅仅因为它正在运行并不意味着您可以从其他模块中访问其中的变量。

例如:

testpackage
__init__.py
testmod.py

假设 __init__.py 有代码 print "Initializing __init__",而 testmod.pyprint "Initializing testmod “。在这种情况下,导入 testpackagetestmod 将导致运行初始化代码:

dynamic-oit-vapornet-c-499:test dgrtwo$ python -c "import testpackage"
Initializing __init__
dynamic-oit-vapornet-c-499:test dgrtwo$ python -c "from testpackage import testmod"
Initializing __init__
Initializing testmod

但是,它不会testmod.py 访问__init__.py 中的变量。这必须明确地完成。

关于python - 为什么模块不能访问其包的 __init__.py 中声明的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11747456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com