Изменение реализации функции в Python

Я пишу модуль, который предоставляет одну функцию и требует шага инициализации, однако из-за определенных ограничений мне нужно инициализировать при первом вызове, поэтому я ищу подходящую идиома в Python, которая позволила бы мне избавиться от условного.

#with conditional
module.py
initialized = False
def function(*args):
   if not initialized: initialize()
   do_the_thing(*args)

Я бы хотел избавиться от этого условия с помощью чего-то вроде этого (это не работает):

#with no conditional
module.py
def function(*args):
   initialize()
   do_the_thing(*args)
   function = do_the_thing

Я понимаю, что я не могу просто использовать имена в модуле и изменять их во время выполнения, потому что модули, использующие из на функцию импорта модуля никогда не повлияет function = other_fun внутри модуля.
Итак, есть ли какая-нибудь питоническая идиома, которая могла бы сделать это правильно?

5
задан Arkaitz Jimenez 5 November 2011 в 12:25
поделиться