代码之家  ›  专栏  ›  技术社区  ›  Michael Scott Asato Cuthbert

在Python模块上对_dir__;进行子类化

  •  0
  • Michael Scott Asato Cuthbert  · 技术社区  · 5 年前

    从Python 3.7开始,可以定义 __dir__() 在模块上。但是,如果你想获得“正常”的输出呢 dir(module) 然后从中添加或删除?

    例如,我想做这样的事情:

    def __dir__():
        dir_out = super().__dir__()[:]  # does not work
        dir_out.pop('Optional')  # get rid of the typing imports
        return dir_out
    

    显然,由于模块不是普通类 super() 电话不通。但还有别的办法吗?

    1 回复  |  直到 5 年前
        1
  •  0
  •   Michael Scott Asato Cuthbert    5 年前

    使用 globals() 命令以获取目录中通常显示的内容:

    def __dir__():
        dir_out = list(globals()) 
        dir_out.pop('Optional')  # get rid of the typing imports
        return dir_out