class Singleton:
    _instance = None

    def __new__(cls, *args, **kwargs):
        if cls._instance is None:
            print("Creating new Singleton instance")
            cls._instance = super().__new__(cls)
        return cls._instance

    def __init__(self, value=None):
        # Set value only the first time if provided
        if not hasattr(self, 'value') and value is not None:
            self.value = value

    def get_value(self):
        return getattr(self, "value", None)


# === Usage Demo ===
if __name__ == "__main__":
    a = Singleton("First Instance")
    b = Singleton("Second Instance")

    print(f"a.value: {a.get_value()}")
    print(f"b.value: {b.get_value()}")
    print(id(a),id(b))
    print(f"Are both same instance? {a is b}")
