human
I am working on the file "Notebooks/Introduction/4 - Python classes.ipynb".
The first task is:
And changing the definition of the class does not affect the instances that have already been defined. The class definition is copied into the object. 

A better way to deal with this is to define some methods that also live in the class and use those to set values of data at initialisation time, and to define how the class behaves.
Let's look at a better way to initialise the class:
Can you write Python code for it?
 Write me a the Python code you requested?
assistant
#Here is the Python code you requested.

class colour2(object):   
    """
    An rgb colour object with a description of the colour 
    """
    
    def __init__(self, rgb = (0.0,0.0,0.0), description="Black"):
        
        self.rgb = rgb
        self.description = description
        self.complement = ( 1.0 - rgb[0], 1.0 - rgb[1], 1.0-rgb[2] )
        
        return

new_c = colour2(rgb=(1.0,0.0,0.0), description="Red")
new_d = colour2(rgb=(0.0,1.0,0.0), description="Green")

print new_c.rgb
print new_c.complement


help(colour2)

class colour2(object):   
    """
    An rgb colour object with a description of the colour 
    """
    
    def __init__(self, rgb = (0.0,0.0,0.0), description="Black"):
        
        self.rgb = rgb
        self.description = description
        self.complement = ( 1.0 - rgb[0], 1.0 - rgb[1], 1.0-rgb[2] )
        
        return

    def mix(self, other):
        if type(self) != type(other):
            print "Cannot mix apples and oranges"
            return
        else:
            return ( 0.5*(self.rgb[0]+other.rgb[0]),
                     0.5*(self.rgb[1]+other.rgb[1]),
                     0.5*(self.rgb[2]+other.rgb[2]) )
        
    def mixmax(self, other):
        if type(self) != type(other):
            print "Cannot mix apples and oranges"
            return
        else:
            return ( min(self.rgb[0]+other.rgb[0],1.0),
                     min(self.rgb[1]+other.rgb[1],1.0),
                     min(self.rgb[2]+other.rgb[2],1.0) )


new_c = colour2(rgb=(1.0,0.0,0.0), description="Red")
new_d = colour2(rgb=(0.0,1.0,0.0), description="Green")

print new_c.mix(new_d)