Type check assignments to attributes
Allow attributes to have additional properties, such as read_only