# Key(ID)

base classes — `bpy_struct`, `ID`

class `bpy.types.``Key`(ID)

  Shape keys data-block containing different shapes of geometric data-blocks

  `animation_data`

    Animation data for this data-block

    Type: | `AnimData`, (readonly)

  `eval_time`

    Evaluation time for absolute shape keys

    Type: | float in [0, 300000], default 0.0

  `key_blocks`

    Shape keys

    Type: | `bpy_prop_collection` of `ShapeKey`, (readonly)

  `reference_key`

    Type: | `ShapeKey`, (readonly, never None)

  `use_relative`

    Make shape keys relative, otherwise play through shapes as a sequence using the evaluation time

    Type: | boolean, default False

  `user`

    Datablock using these shape keys

    Type: | `ID`, (readonly, never None)

Inherited Properties

`bpy_struct.id_data` `ID.name` `ID.users` `ID.use_fake_user` `ID.tag` | `ID.is_updated` `ID.is_updated_data` `ID.is_library_indirect` `ID.library` `ID.preview`

Inherited Functions

`bpy_struct.as_pointer` `bpy_struct.driver_add` `bpy_struct.driver_remove` `bpy_struct.get` `bpy_struct.is_property_hidden` `bpy_struct.is_property_readonly` `bpy_struct.is_property_set` `bpy_struct.items` `bpy_struct.keyframe_delete` `bpy_struct.keyframe_insert` `bpy_struct.keys` | `bpy_struct.path_from_id` `bpy_struct.path_resolve` `bpy_struct.property_unset` `bpy_struct.type_recast` `bpy_struct.values` `ID.copy` `ID.user_clear` `ID.animation_data_create` `ID.animation_data_clear` `ID.update_tag`

References

`BlendData.shape_keys` `Curve.shape_keys` | `Lattice.shape_keys` `Mesh.shape_keys`