None of the classes you've shown in your example are very good OOP design. There's no need for a class when your methods don't refer to any state. if you just want a namespace, usually a module is better.
But that doesn't matter too much if your question is really about how to combine the effects of multiple functions. There are many ways to do that. Functions are first-class objects in Python, so you can put them in lists or dictionaries, or pass them as arguments to other functions if you want. You can also make "function factories", functions that return new functions.
Here's how you might be able to use that to build the delayed letter writing functions you want. I'm storing the function results in a couple of dictionaries, but you could do something different with them if you need to.
import itertools
import time
def letter_writer_factory(letter):
"""Return a function that prints the provided letter when it is called"""
def func():
print(letter)
return func
def delay_factory(seconds):
"""Return a function that when called, waits for the specified time"""
def delay():
time.sleep(seconds)
return delay
def function_sequencer_factory(*functions):
"""Return a function that calls each function argument in turn"""
def caller():
for func in functions:
func()
return caller
letters = 'abc'
delay_times = [2, 5, 10]
output_funcs = {c: letter_writer_factory(c) for c in letters}
delay_funcs = {t: delay_factory(t) for t in delay_times}
delayed_output_funcs = {(c, t): function_sequencer_factory(df, of)
for (c, of), (t, df) in itertools.product(output_funcs.items(),
delay_funcs.items())}
#print c after waiting for 10 seconds:
delayed_output_funcs['c', 10]()
This is of course a pretty silly example, but these kinds of functional programming techniques can be used to do some actually useful things in some contexts.