понедельник, 16 мая 2011 г.

Реализация Singelton на Python

Столкнулся я с задачкой реализовать патерн Singelton на языке программирования Python 3.1

Единственное рабочее решение я нашел на stackoverflow. Его то я вам и покажу. В питоне нельзя скрыть конструктор, по этому предлагается переопределить метод __new__, который вызывается каждый раз при создании обьекта.

class Singleton(object):
    _instance = None
    def __new__(cls, *args, **kwargs):
        if not cls._instance:
            cls._instance = super(Singleton, cls).__new__(cls, *args, **kwargs)
        return cls._instance


if __name__ == '__main__':
    s1=Singleton()
    s2=Singleton()
    if(id(s1)==id(s2)):
        print "Same"
    else:
        print "Different"

1 комментарий: