0
0 комментариев

Есть замечательная реализация синглтона.

from multiprocessing import Lock
 
 
class Singleton:
    _singltone = {}
 
    def __init__(self):
        self.__dict__ = self._singltone
        self.lock = Lock()
 
 
if __name__ == '__main__':
    a = Singleton()
    b = Singleton()
    print(id(a.lock), id(b.lock), id(Singleton().lock))

140009961424432 140009961424432 140009961425496

Подскажите, почему при повторном создании объекта, интерпретатор подцепляет уже существующий словарь аргументов (т.е. id(a.lock) == id (b.lock) is True ). В то же время, id(Singleton().lock) является другим объектом.


Замечу, что создаются разные объекты, т.е. id(a) != id(b). Но наборы аргументов вроде бы должны совпадать


Добавить комментарий