Zaimplementuj dekorator Singleton


In [ ]:
def Singleton(cls):
    instances = {}
    def wrapper(*args, **kwargs):
        if instances.get(cls) is None:
            instance = cls(*args, **kwargs)
            instances[cls] = instance
            return instance
        else:
            return instances[cls]
    return wrapper
        
@Singleton
class Punkt():
    def __init__(self, x, y):
        self.x = x
        self.y = y
        
@Singleton
class CustomStruct():
    def __init__(self, x, y, data_vector):
        self.x = x
        self.y = y
        self.data_vector = data_vector

In [ ]:
a = Punkt(1, 2)
b = Punkt(2, 3)
print(a, vars(a), id(a))
print(b, vars(b), id(b))

c = CustomStruct(5, 10, [1, 2, 3])
d = CustomStruct()

print(c, vars(c), id(c))
print(d, vars(d), id(d))