注册 登录
编程论坛 Python论坛

求问 这个模块是什么意思,一直看不懂。初学python求指教啊

hrg689689 发布于 2012-09-23 15:06, 1752 次点击
def singleton(cls):
    instances = {}
    def get_instance():
        if cls not in instances:
            instances[cls] = cls()
        return instances[cls]
    return get_instance

@singleton
class Mylogger:

    _fpath = 'mokey.log'
    _file = None

    def __init__(self):
        self._file = open(self._fpath, mode='w',encoding = 'utf-8')
        print("初始化成功")

    def write(self, string):
        if self._file:
            self._flie.write(string)
            print("打印成功了")
1 回复
#2
tpiper2012-10-17 17:45
singleton是个修饰器,加工了类Mylogger。
singleton修饰的作用是把不同的Mylogger实例的执行结果加进了一个字典里,可以一起调用
比如创建两个实例:
a = Mylogger()
a.write('a:1')
a.write('a:2')
b = Mylogger()
b.write('b:1')
b.write('b:2')
有singleton修饰的结果是
a:1a:2b:1b:2
没有singleton修饰的结果是
b:1b:2
因为没有修饰下,实例b的执行结果覆盖了实例a的执行结果

另外倒数第二行应该是self._file.write(string),file拼错了
1