Реализация для варианта использования кажется необычной и опасной, потому что при вызове сеттера для поля я бы никогда не ожидал поведение:
присваивает значения другие свойства
Я бы порекомендовал создать отдельные функции.
1) Ваше поле в любом случае является функцией:
fun stringRepresentation() = this.toString()
2) Установка других свойств:
parseAndSetOther(value: String) {
/* parses the string and assigns values to other properties */
}
2.1) Возможно, вы можете оставить объект неизменным и вернуть новый измененный объект:
parseAndSetOther(value: String) : MyClass {
/* parses the string and assigns values to other properties */
return this.copy(value = "new value", ...)
}