从 __init__.py 定义跨模块/全局变量

壳牌

我试图通过使导入变得简单(就像requests模块一样)来简化我的包

为此,我认为使用__init__.py将是最好的选择。因为,当用户导入我的包时,__init__.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 的类型:

<class 'packagename.index.packagename'> # "packagename" in the beginning is my package, "packagename" in the end is class object

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

<module 'packagename' from 'packagename/__init__.pyc'>


从我的研究中,我还没有找到任何关于我的问题的非常可靠的答案(如果我错过了什么,请道歉),但是,简而言之,我如何定义变量__init__.py以便用户可以使用它?

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

谢谢!

壳牌

发现了。

requests包使用与我相同的技术,它们的功能是立即导入的__init__.py,单个示例:

from .api import request, get, head, post, patch, put, delete, options

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

requests.post

所以在我的例子中,Package 和 Class Object 具有相同的名称,但不幸的是,我认为它们不能以简洁的方式相互替换。

如果我的包被称为 Apple 并且index.py模块内的类对象也被称为 Apple。

如果我从 导入了 Apple 类对象__init__.py,我会这样称呼它:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

`topmost.__init__.py` 是否可以访问 `topmost.submodule.__init__.py` 中的全局变量?

来自分类Dev

python模块__init__函数

来自分类Dev

跨模块的全局变量

来自分类Dev

导入缺少__init__的子模块

来自分类Dev

Python __init__文件无法导入模块

来自分类Dev

Python __init__从无处查找变量

来自分类Dev

__init__方法中的变量范围?

来自分类Dev

为什么在__init__之外定义对象变量不赞成?

来自分类Dev

Python装饰器自动定义__init__变量

来自分类Dev

Python - __init__ 子模块使用父包

来自分类Dev

瓶py和Jinja2全局变量

来自分类Dev

全局变量未更新(Processing.py)

来自分类Dev

web2py中的全局变量

来自分类Dev

在某些类的python中的__init__ def中获取变量

来自分类Dev

类变量不在__init__中时的行为

来自分类Dev

Python更改__init__中声明的变量值

来自分类Dev

pickle 不保存(或加载?) __init__ 之外的对象列表变量

来自分类Dev

如何在 Python 中的 def __init__ 中检索变量

来自分类Dev

__init__函数似乎是在定义而不是实例上执行

来自分类Dev

确定类是否具有用户定义的__init__

来自分类Dev

__init__函数似乎是在定义而不是实例上执行

来自分类Dev

导入时未调用Python自定义__init__

来自分类Dev

__init__ 中的 Python 3 NameError,未定义“会话”

来自分类Dev

在 def __init__ 中定义 ModelChoiceField 的初始值

来自分类Dev

如何在使用静态类变量的类的__init__中定义默认参数?

来自分类Dev

python使用__init__与仅在类中定义变量-有什么区别吗?

来自分类Dev

Python:如何使用类方法在__init__函数中定义变量?

来自分类Dev

如何在使用静态类变量的类的__init__中定义默认参数?

来自分类Dev

Python如何在不定义__init__的情况下知道实例变量?

Related 相关文章

  1. 1

    `topmost.__init__.py` 是否可以访问 `topmost.submodule.__init__.py` 中的全局变量?

  2. 2

    python模块__init__函数

  3. 3

    跨模块的全局变量

  4. 4

    导入缺少__init__的子模块

  5. 5

    Python __init__文件无法导入模块

  6. 6

    Python __init__从无处查找变量

  7. 7

    __init__方法中的变量范围?

  8. 8

    为什么在__init__之外定义对象变量不赞成?

  9. 9

    Python装饰器自动定义__init__变量

  10. 10

    Python - __init__ 子模块使用父包

  11. 11

    瓶py和Jinja2全局变量

  12. 12

    全局变量未更新(Processing.py)

  13. 13

    web2py中的全局变量

  14. 14

    在某些类的python中的__init__ def中获取变量

  15. 15

    类变量不在__init__中时的行为

  16. 16

    Python更改__init__中声明的变量值

  17. 17

    pickle 不保存(或加载?) __init__ 之外的对象列表变量

  18. 18

    如何在 Python 中的 def __init__ 中检索变量

  19. 19

    __init__函数似乎是在定义而不是实例上执行

  20. 20

    确定类是否具有用户定义的__init__

  21. 21

    __init__函数似乎是在定义而不是实例上执行

  22. 22

    导入时未调用Python自定义__init__

  23. 23

    __init__ 中的 Python 3 NameError,未定义“会话”

  24. 24

    在 def __init__ 中定义 ModelChoiceField 的初始值

  25. 25

    如何在使用静态类变量的类的__init__中定义默认参数?

  26. 26

    python使用__init__与仅在类中定义变量-有什么区别吗?

  27. 27

    Python:如何使用类方法在__init__函数中定义变量?

  28. 28

    如何在使用静态类变量的类的__init__中定义默认参数?

  29. 29

    Python如何在不定义__init__的情况下知道实例变量?

热门标签

归档