Python实现单例模式

2018-07-07  本文已影响0人  JM68

单例模式的概念:

单例模式的作用:

Python实现单例模式:

def singleton(cls):
    instance = {}

    def getinstance(*args, **kwargs):
        if cls not in instance:
            instance[cls] = cls(*args, **kwargs)
            return instance[cls]
        return getinstance


@singleton
class MyClass(object):
    pass
class Singleton(type):
    _instances = {}

    def __call__(cls, *args, **kwargs):
        if cls not in cls._instances:
            cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
        return cls._instances[cls]


class MyClass(object, metaclass=Singleton):
    pass

瞎写实例一则:

class Singleton(type):
    _instances = {}

    def __call__(cls, *args, **kwargs):
        if cls not in cls._instances:
            cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
        return cls._instances[cls]


class MyClass(object, metaclass=Singleton):

    def __init__(self, name):
        self._name = name

    def foo(self):
        return f'{self._name}来自火星'


wang = MyClass('王大锤')
liu = MyClass('刘亦菲')
j = MyClass('JM68')

print(wang.foo(), liu.foo(), j.foo())

>>> 王大锤来自火星 王大锤来自火星 王大锤来自火星
上一篇下一篇

猜你喜欢

热点阅读