user: Show practical ways to work with Light(ID) in a Blender add-on or script – include code.

assistant: # Light(ID)

base classes — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct"), [`ID`](bpy.types.ID.html#bpy.types.ID "bpy.types.ID")

subclasses —
[`AreaLight`](bpy.types.AreaLight.html#bpy.types.AreaLight "bpy.types.AreaLight"), [`PointLight`](bpy.types.PointLight.html#bpy.types.PointLight "bpy.types.PointLight"), [`SpotLight`](bpy.types.SpotLight.html#bpy.types.SpotLight "bpy.types.SpotLight"), [`SunLight`](bpy.types.SunLight.html#bpy.types.SunLight "bpy.types.SunLight")

*class* bpy.types.Light(*ID*)
:   Light data-block for lighting a scene

    animation_data
    :   Animation data for this data-block

        Type:
        :   [`AnimData`](bpy.types.AnimData.html#bpy.types.AnimData "bpy.types.AnimData"), (readonly)

    color
    :   Light color

        Type:
        :   [`mathutils.Color`](mathutils.html#mathutils.Color "mathutils.Color") of 3 items in [0, inf], default (1.0, 1.0, 1.0)

    cutoff_distance
    :   Distance at which the light influence will be set to 0

        Type:
        :   float in [0, inf], default 40.0

    cycles
    :   Cycles light settings

        Type:
        :   `CyclesLightSettings`, (readonly)

    diffuse_factor
    :   Diffuse reflection multiplier

        Type:
        :   float in [0, inf], default 1.0

    exposure
    :   Scales the power of the light exponentially, multiplying the intensity by 2^exposure

        Type:
        :   float in [-32, 32], default 0.0

    node_tree
    :   Node tree for node based lights

        Type:
        :   [`NodeTree`](bpy.types.NodeTree.html#bpy.types.NodeTree "bpy.types.NodeTree"), (readonly)

    normalize
    :   Normalize intensity by light area, for consistent total light output regardless of size and shape

        Type:
        :   boolean, default True

    specular_factor
    :   Specular reflection multiplier

        Type:
        :   float in [0, inf], default 1.0

    temperature
    :   Light color temperature in Kelvin

        Type:
        :   float in [800, 20000], default 6500.0

    temperature_color
    :   Color from Temperature

        Type:
        :   [`mathutils.Color`](mathutils.html#mathutils.Color "mathutils.Color") of 3 items in [0, inf], default (0.0, 0.0, 0.0), (readonly)

    transmission_factor
    :   Transmission light multiplier

        Type:
        :   float in [0, inf], default 1.0

    type
    :   Type of light

        Type:
        :   enum in [Light Type Items](bpy_types_enum_items/light_type_items.html#rna-enum-light-type-items), default `'POINT'`

    use_custom_distance
    :   Use custom attenuation distance instead of global light threshold

        Type:
        :   boolean, default False

    use_nodes
    :   Use shader nodes to render the light

        Type:
        :   boolean, default False

    use_shadow
    :   Type:
        :   boolean, default True

    use_temperature
    :   Use blackbody temperature to define a natural light color

        Type:
        :   boolean, default False

    volume_factor
    :   Volume light multiplier

        Type:
        :   float in [0, inf], default 1.0

    area(*\**, *matrix_world=((0.0, 0.0, 0.0, 0.0), (0.0, 0.0, 0.0, 0.0), (0.0, 0.0, 0.0, 0.0), (0.0, 0.0, 0.0, 0.0))*)
    :   Compute light area based on type and shape. The normalize option divides light intensity by this area

        Parameters:
        :   **matrix_world** ([`mathutils.Matrix`](mathutils.html#mathutils.Matrix "mathutils.Matrix") of 4 \* 4 items in [-inf, inf], (optional)) – Object to world space transformation matrix

        Returns:
        :   area

        Return type:
        :   float in [-inf, inf]

    inline_shader_nodes()
    :   Get the inlined shader nodes of this light. This preprocesses the node tree
        to remove nested groups, repeat zones and more.

        Returns:
        :   The inlined shader nodes.

        Return type:
        :   [`bpy.types.InlineShaderNodes`](bpy.types.InlineShaderNodes.html#bpy.types.InlineShaderNodes "bpy.types.InlineShaderNodes")

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   [type](#bpy.types.Light.type "bpy.types.Light.type")