Color as Custom Property? With objects, there you can add Custom Properties to an object, though it only seems to let you specify numeric values.

Is there any way that I can add a color value as a custom property, such as through Blender's python API?

EDIT: To clarify what I am doing: I am making a set of character models for use in a web comic I am making.  The character models will be "generic" ones for ordinary characters (ie: bystanders, pedestrians, etc.).  What I want to do is put some color field properties onto the armature (which is the parent of all the model pieces and clothing), and then use drivers in the model pieces so that they can pull the color data for the clothing, eyes, and skin.

I wish to use this method because I want to use models in a linked fashion, where I import one or more generic models and set the colors in the scene they are used in after importing, so that I don't fill up my hard drive (or my cloud drive) with dozens of .blend files for every color variation I use.

EDIT 2: To clarify further, I wish for a solution that can be applied on a per-model basis, rather than needing to create an addon that adds the same set of properties to all models.
Here is condensed heavily edited sample add-on an artist requested t use blender as the middleman to mass convert vertex colors data from custom data source, the latter being removed as its not related to the question.

The color value was selected using FloatVectorProperty, specifically with subtype COLOR. This also has the advantage that if exposed through the UI is visualised by the nice UI Color wheel/hex-widget.

The code is split into properties.py and ui.py as this is done for ease of maintainance and separation of concerns, ie storage and display. You can store the custom property anywhere you want I choose object as per the question, the same applies for where the ui appears.

You can also combine it into one script, just need to change registration from module to class and supply each class name.

I generally use a properties group when working with multiple properties, but you can just define a single custom property to attach.
properties.py

import bpy
from bpy.props import FloatVectorProperty, StringProperty, PointerProperty

class ObjectProperties(bpy.types.PropertyGroup):
    @classmethod
    def register(cls):

        bpy.types.Object.custom = PointerProperty(
            name="Custom properties",
            description="Custom Properties for Objects",
            type=cls,
            )

        #Add in the properties you want      
        cls.hexwidget = FloatVectorProperty(name="Hex Value", 
                                        subtype='COLOR', 
                                        default=[0.0,0.0,0.0])

        cls.test_string = StringProperty(name="Test String",
                                        default="I am a string")

    @classmethod
    def unregister(cls):
        del bpy.types.Object.custom

def register():
    bpy.utils.register_class(ObjectProperties)

def unregister():
    bpy.utils.unregister_class(ObjectProperties)


This module has specific registration handling as we prefer to get rid of custom info if the addon is not install, design decision.

Here is the UI which will display the value stored in the defined property
ui.py

import bpy

class UtilityPanel(bpy.types.Panel):
    bl_label = "Utilites Panel"
    bl_idname = "OBJECT_PT_utilities"

    bl_space_type = "PROPERTIES"
    bl_region_type = "WINDOW"
    bl_context = "object"

    def draw(self, context):
        layout = self.layout       

        box = layout.box()
        row = box.row()
        row.prop(context.active_object.custom, "hexwidget")
        row = box.row()
        row.prop(context.active_object.custom, "test_string")


__init__.py for completeness    

#--- ### Header
bl_info = {
    "name": "Custom Property: Color",
    "category": "Object",
}

import bpy
import bpy.props

from &lt;folder_name&gt; import ui, properties

def register():
    properties.register()
    bpy.utils.register_module(__name__)


def unregister():
    properties.unregister()
    bpy.utils.unregister_module(__name__)

if __name__ == "__main__":
    register()


When enabled the add-on adds a custom propertygroup to each Object, which can be altered or expanded as you need.