Python 3 Singleton

Pošto Python kao jezik ne poznaje statičke atribute, potrebno je naći način da se ovo ograničenje zaobiđe. Pravi način da se ovo zaobiđe je meta-klasa. Prvo je potrebno definisati samu metaklasu:


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]

Potom je potrebno primeniti ovu metaklasu:


class SingletonClassImplementation(BaseClass, metaclass = Singleton):
    def __init__(self, *args, **kwargs):

        super(SingletonClassImplementation, self).__init__(*args, **kwargs)

Коментари

Популарни постови