django-Python:从导入的模块中获取导入模块的详细信息

我正在编写一段可重用代码来导入我需要的地方,但它需要一些关于导入内容的信息。我有一个解决办法,可以做我想做的,但是有点难看。有更好的办法吗?这是我正在做的事情的一个简化版本。我想要的是:导入一个方法并使用它,但是在mod2中查看f。它需要来自导入模块的一些信息。mod1:

from mod2 import f

f(...)

mod2:

from things_i_want import parent_module, importing_module

def f(*args, **kwargs):

    from importing_module.parent_module import models

    # ... do some stuff with it, including populating v with a string



    v = \'some_string\'

    m = getattr(importing_module, v, None)

    if callable(m)

        return m(*args, **kwargs)

我的丑陋解决方案:mod1:

from mod2 import f as _f

def f(*a, **k):return _f(__name__, globals(), *a, **k)

f(...)

mod2:44444

1个回答

  1. 这是个坏主意,因为模块是缓存的,所以如果另一个模块,比如mod3.py,也导入mod2,它将第一次获得相同的mod2对象。这个模块没有被重新导入。也许你自己在导入mod2之前导入了其他导入mod2的模块,那么你就不再是那个导入mod2的模块了。模块只导入一次。因此,您应该使用另一种可重用的方法,而不是试图获取谁导入了模块。也许使用类并传递实例?

Leave a Reply

Your email address will not be published. Required fields are marked *

You can use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>