Randomized Lighting with Python
Looking at the random number generation, a lot of duplicated code can be easily removed.

Starting at the 4th line: import random. The only function that is used is randint, so you could do from random import randint and then use randint everywhere, instead of random.randint.

Another repetition that can be avoided concern the arguments of randint: you can unpack the tuple using the *.

def start_delay(self):
    '''Return random delay within &lt;start_delay_range&gt;.'''
    return randint(*start_delay_range)


And your (repetitive) properties are now much shorter!