Python 从_init__u;.py定义跨模块/全局变量

Python 从_init__u;.py定义跨模块/全局变量,python,import,Python,Import,我试图简化我的包,使导入变得简单(就像请求模块所做的那样) 为此,我认为使用\uuuu init\uuuu.py将是最佳选择。因为,当用户导入我的包时,调用了\uuuuu init\uuuuuuuuuy.py。然后我在里面添加了一些代码,从特定模块导入对象 请想象一下,我的包和类对象都有相同的名称: # __init__.py from index import packagename # This is class object myclass = myclass # This is ju

我试图简化我的包,使导入变得简单(就像
请求
模块所做的那样)

为此,我认为使用
\uuuu init\uuuu.py
将是最佳选择。因为,当用户导入我的包时,调用了
\uuuuu init\uuuuuuuuuy.py
。然后我在里面添加了一些代码,从特定模块导入对象

请想象一下,我的包和类对象都有相同的名称:

# __init__.py
from index import packagename  # This is class object
myclass = myclass  # This is just example to be substituted, I know it has no effect
print(myclass)
每当导入包时,Python都会记录myclass的类型:

#“packagename”开头是我的包,“packagename”结尾是类对象

但是,未设置类的新实例:


从我的研究中,我还找不到任何关于我的问题的非常可靠的答案(如果我遗漏了什么,我深表歉意),然而,简言之,我如何从
\uuuu init\uuuuuuuuuy.py
定义变量以便用户可以使用它

因此,每当用户导入
packagename
时,变量
packagename
将是类对象的实例,而不是模块

谢谢

找到了

请求
包使用了与我相同的技术,它们的函数立即从
\uuuu init\uuuu.py
导入,单个示例:

from.api导入请求、get、head、post、patch、put、delete、options

但是,此函数仅从包内部导入,因此仍应从包中调用它们:

请求。post

所以在我的例子中,包和类对象具有相同的名称,但不幸的是,我认为它们不能以一种简洁的方式相互替换

如果我的包被称为Apple,而
index.py
模块中的类对象也被称为Apple

如果我已经从
\uuuu init\uuuuuy.py
导入了Apple类对象,我会这样称呼它:


Apple.Apple
(其中Apple[0]是包的名称,Apple[1]是类对象的名称)

myclass=myclass
-您希望做什么?@user2357112我对它没有任何期望,只是添加了变量定义不正确(在本例中无关紧要)的示例。我希望从
\uuuu init\uuuuuu.py
导入可以工作,但现在还不清楚您想在这里做什么。将
myclass
导入
\uuuuu init\uuuuuuuuupy
允许您从包执行
导入myclass
,而不是从包执行
导入myclass
。您还希望做什么?@DanielRoseman道歉,我错误地替换了示例值,我正在从索引模块
从索引导入myclass导入
。假设包名与类名相同,我尝试在导入包时导入类,例如,当我导入
MyPackageName
module
MyPackageName
时,将导入并替换类对象。用更合适的细节更新了答案。