【问题标题】:Best way to instantiate classes which is in imported modules实例化导入模块中的类的最佳方法
【发布时间】:2015-02-05 09:08:23
【问题描述】:

我在模块consumers\a 内部有课程ABconsumers\a 内部,Cconsumers\c 内部。我使用以下代码来获取类。有没有其他方法可以达到同样的效果。 (这仅适用于class_name.lower() == module_name)。

    bridge.py

    import inspect
    import types

    from consumers import a
    from consumers import b
    from consumers import c

    for name, val in globals().items():
    if isinstance(val, types.ModuleType):
        if 'consumers' in val.__name__:
            for k, v in inspect.getmembers(val):
                if k.lower() == name:
                    v()

我正在尝试这个,因为我不希望继任者做很多工作来增加消费者。

我读过, how-can-i-get-a-list-of-all-classes-within-current-module-in-python、/how-do-you-get-all-classes-defined-in-a-module-but-not-imported 和更多链接,并提出了上述解决方案。

【问题讨论】:

标签: python


【解决方案1】:

只需导入:

from consumers.a import A
from consumers.b import B
from consumers.C import C

a = A()
b = B()
c = C()

【讨论】:

  • @JohnPrawyn 有这么多,我倾向于将它们放在一个列表中。你能把这些类移到一个子模块中,并通过__init__.py公开列表吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
  • 2016-01-25
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
相关资源
最近更新 更多