Когда у меня возникла такая необходимость, я использовал декоратор.
def remember_order(func, counter=[0]):
func._order = counter[0]
counter[0] += 1
return func
@remember_order
def foo():
print "foo"
@remember_order
def bar():
print "bar"
@remember_order
def baz():
print "baz"
Да, вы должны украшать каждую функцию индивидуально.Ясно, что явное лучше, чем неявное, и, поскольку вы делаете что-то неестественное, хорошо назвать это как можно проще.
Теперь вы хотите получить все декорированные функции в порядке, в котором они были определены?
import sys
module = sys.modules[__name__] # get reference to current module
# you could also use a reference to some other module where the functions are
# get the functions in the order defined
funcs = sorted((func for func in
(getattr(module, name) for name in dir(module))
if callable(func) and hasattr(func, "_order")),
key = lambda func: func._order)
# call them in that order
for func in funcs:
func()
Но было бы проще дать им имена в алфавитном порядке ...