首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么使用apt.Cache而不是apt.cache.Cache()创建对象

为什么使用apt.Cache而不是apt.cache.Cache()创建对象
EN

Stack Overflow用户
提问于 2015-03-09 01:06:26
回答 1查看 326关注 0票数 1

我陷入困境,我无法取得进展,为这个愚蠢的问题感到抱歉。我找了很多,但我不知道我错过了什么。请帮帮我。

我在python中学习了模块和类。现在,我想使用python和apt进行一些操作。我正在学习:http://apt.alioth.debian.org/python-apt-doc/library/apt.cache.html,但是,我无法理解,模块是apt.cache,如页面顶部所示。我期望通过编写apt.cache.Cache()来创建对象,但是对象是通过编写apt.Cache()创建的,如下所示。为什么?

代码语言:javascript
复制
    import apt
    import apt.progress

    # First of all, open the cache
    cache = apt.Cache()
    # Now, lets update the package list
    cache.update()
    # We need to re-open the cache because it needs to read the package list
    cache.open(None)
    # Now we can do the same as 'apt-get upgrade' does
    cache.upgrade()
    # or we can play 'apt-get dist-upgrade'
    cache.upgrade(True)
    # Q: Why does nothing happen?
    # A: You forgot to call commit()!
    cache.commit(apt.progress.TextFetchProgress(),
                 apt.progress.InstallProgress())

第二个类似的问题是关于下面的代码,缓存类是从模块apt.cache导入的。我期望通过编写apt.cache.Cache()来创建这个对象,但是它是通过编写apt.Cache()来创建的。为什么?

代码语言:javascript
复制
    >>> from apt.cache import FilteredCache, Cache, MarkedChangesFilter
    >>> cache = apt.Cache()
    >>> changed = apt.FilteredCache(cache)
    >>> changed.set_filter(MarkedChangesFilter())
    >>> print len(changed) == len(cache.get_changes()) # Both need to have same length
    True

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-13 16:03:15

如果您查看apt 套餐套餐文件,就会看到以下一行:

代码语言:javascript
复制
__all__ = ['Cache', 'Cdrom', 'Package']

蟒蛇文档说:

导入语句使用以下约定:如果包的__ init__.py代码定义了一个名为all的列表,则它被视为在遇到package *时应该导入的模块名称列表。

这就是为什么你可以使用apt.Cache()

对于问题的第二部分,您可以使用

代码语言:javascript
复制
from apt.cache import Cache
cache = Cache()

您还可以使用

代码语言:javascript
复制
import apt
cache = apt.Cache()       //because of the __all__ variable in __init__.py
cache = apt.cache.Cache() //because it's a fully qualified name
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28933807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档