是否可以在python中的单例类模块中导入另一个模块?

时间:2017-06-28 05:43:07

标签: python python-2.7

我有一个模块作为单例类。在那个单例类模块中,我想导入其他模块,这不是单例。是否可以导入?

当我导入模块并运行到单件模块时,我得到错误,单件模块未定义。

例如: first_file.py:

class first(object):
    def __init__(self):
        print "first class"

second_file.py

from Libs.first_file import * #here libs is my folder /module
@singleton
class second(self):
    def __init__(self):
        print "Second class"

我跑的时候:  python second_file.py

我收到错误NameError:name' second_file()'没有定义 但当注释掉import时,则second_file()模块正在按预期工作。

谢谢,

1 个答案:

答案 0 :(得分:0)

也许您应该提供更多详细信息。例如,@singleton

的详细信息

我对您提供的代码进行了测试。我自己添加了装饰器,并将class second(self):更改为class second(first):,如下所示:

first_file.py:

class first(object):
    def __init__(self):
        print "first class"

second_file.py:

from first_file import *  # here libs is my folder /module


def singleton(class_):
    instances = {}
    def getinstance(*args, **kwargs):
        if class_ not in instances:
            instances[class_] = class_(*args, **kwargs)
        return instances[class_]
    return getinstance


@singleton
class second(first):
    def __init__(self):
        print "Second class"


if __name__ == '__main__':
    test = second()
    test1 = second()

当我运行python second_file.py时:

Second class
[Finished in 0.0s]

似乎没问题。 也许我没有明白你的问题,但希望它有所帮助。