代码之家  ›  专栏  ›  技术社区  ›  eye_water

“模块名称”的含义

  •  1
  • eye_water  · 技术社区  · 7 年前

    点击 here . 在代码的latt中。我无法理解“module\u name”。它从哪里来?“模块名称”的含义是什么?

    def add_routes(app, module_name):
        n = module_name.rfind('.')
        if n == (-1):
            mod = __import__(module_name, globals(), locals())
        else:
            name = module_name[n+1:]
            mod = getattr(__import__(module_name[:n], globals(), locals(), [name]), name)
        for attr in dir(mod):
            if attr.startswith('_'):
                continue
            fn = getattr(mod, attr)
            if callable(fn):
                method = getattr(fn, '__method__', None)
                path = getattr(fn, '__route__', None)
                if method and path:
                    add_route(app, fn)
    

    class RequestHandler . 但我不知道这意味着什么。它让 类RequestHandler 变成一个模子?像这样的?

    import RequestHandler
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Joseph K.    7 年前

    我无法理解“module\u name”

    module_name 是传递给调用的函数的值的占位符 add_routes()

    例如

    add_routes(a, b)
    
    # New Definition
    a is app
    b is module_name
    
    n = b.rfind('.')
    ...
    

    它从哪里来?

    在里面 awesome-python3-webapp , 模块名称 仅在以下范围内使用 添加路由() 作用

    我认为“module\u name”与类RequestHandler有关。但是 我不知道这是什么意思。它是否允许类RequestHandler 变成一个模子?像这样的?

    考虑:

    # RequestHandler.py
    def add_routes(app, module_name):
        print(app)
        print(module_name)
    

    在这种情况下,您可以通过以下方式使用上述代码: import 就像你提到的:

    import RequestHandler
    a = foo
    b = bar
    RequestHandler.add_routes(a, b)
    
    Result:
    foo
    bar