【问题标题】:How to use a python package - shouldn't i be able to access anything listed in __all__?如何使用 python 包 - 我不应该能够访问 __all__ 中列出的任何内容吗?
【发布时间】:2011-03-30 10:03:05
【问题描述】:

我正在尝试使用 pyupnp 包 (http://code.google.com/p/pyupnp/)

我已经构建并安装了它,在我的代码中我有:

import pyupnp
b = pyupnp.UpnpBase()
...

但我收到此错误:AttributeError: 'module' object has no attribute 'UpnpBase'

现在我查看了包的代码,它有以下内容:

__all__ = [
  'UpnpNamespace',
  'UpnpDevice',
  'UpnpBase',
  ...

我认为我可以访问__all__ 列表中的任何内容?我做错了什么?

非常感谢

【问题讨论】:

    标签: python module packages package upnp


    【解决方案1】:

    看看这个包,你应该导入pyupnp.upnp,而不是pyupnp__all__的内容在此无关。

    【讨论】:

    • 作为进一步的解释——__all__ 的内容在导入模块时不会与模块中定义的名称进行检查。相反,它是针对这些名称的过滤器,当以from some_module import * 的形式使用时——它只会导入__all__ 中列出的内容,但不一定是那里的所有内容。当我重构并忘记更新它们时,我经常发现我的__all__s 已经过时了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 2013-08-13
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多