python列出通过*导入的所有导入模块,python方法

2024-09-27 17:36:37 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个包“colorExtensions”,在我的__init__.py中有{}。通过向目录和__all__列表中添加模块,该包应该能够自动扩展。以下是可以接受的,还是有其他的“最佳实践”来处理这类事情?在

import colorExtentions
from colorExtentions import *

for moduleName in colorExtentions.__all__:
    colors.append(moduleName)
promptUserToChoose(colors)

Tags: 模块infrompyimport目录列表for
2条回答

假设每种颜色都是一个类,我认为更好的解决方案是确保所有的颜色子类都来自一个类(这无论如何都是很好的设计):

class Color:
    ...

然后,当您需要所有颜色的列表时,您只需导入将包含这些类的任何模块,然后执行以下操作:

^{pr2}$

这样就得到了每个Color子类的列表。在

注意在2.x中,您将需要新样式的类(继承自object)来使用__subclasses__()方法。在

在Python官方文档中,不鼓励从模块导入所有名称。参见:

http://docs.python.org/2/howto/doanddont.html#from-module-import

引用:

When It Is Just Fine

There are situations in which from module import * is just fine:

  • The interactive prompt. For example, from math import * makes Python an amazing scientific calculator.
  • When extending a module in C with a > module in Python.
  • When the module advertises itself as from import * safe.

如果坚持使用__all__-请使用其他名称,如color_list,并动态扩展该变量。然后导入该变量:

import colorExtentions
from colorExtentions import color_list

colors.extends(color_list)

相关问题 更多 >

    热门问题