cached_class_property class (basic implementation without del support)