Hola.
A mi lo unico que se me ocurre para que el __String solo lo uses para imprimir es que dependiendo del valor de un parametro imprimas una cosa u otra.
Pero creo que es muy complicado.
Por otro lado, enrique en el ejemplo que pones, por alguna razon o convenio pones el _ en el nombre de la propiedad ?
Saludos,