def __init__(self, addr, heartbeat_sec=None, context=None, daemon=True):
        """PropertyClient subclass that uses ZeroMQ PUB/SUB to receive out updates.
        Parameters:
            addr: a string ZeroMQ port identifier, like 'tcp://127.0.0.1:5555'.
            context: a ZeroMQ context to share, if one already exists.
            daemon: exit the client when the foreground thread exits.
        """
        self.context = context if context is not None else zmq.Context()
        self.addr = addr
        self.heartbeat_sec = heartbeat_sec
        self.connected = threading.Event()
        super().__init__(daemon)