python-基于文件导入的特性的单例模式

多实例模式

class Foo:
    def __init__(self):
        self._ret = []
    def add(self,v):
        self._ret.append(v)
obj1 = Foo()
obj1.add(666)
obj2 = Foo()
print(obj2._ret)    # []

单例模式

Python中文件导入会将导入文件从上至下加载执行一遍。
python中优化的机制,导入过一次之后,不会重新再加载了。
基于文件导入的特性的单例模式。

# v1.py
class Foo:
    def __init__(self):
        self._ret = []

    def add(self,v):
        self._ret.append(v)
site = Foo()
#
# v2.py
import v1

print(v1.site._ret)     # [ ]
v1.site.add(666)

import v1
print(v1.site._ret)     # [666]

posted on 2018-01-14 16:10  运维小学生  阅读(120)  评论(0编辑  收藏  举报

导航