There are certain common kinds of properties, that, though we can implement them manually every time we need them, would be very nice to implement once and for all, and put into a library. Examples include
- lazy properties: the value gets computed only upon first access,
- observable properties: listeners get notified about changes to this property,
- storing properties in a map, instead of a separate field for each property.