D'Arcy J.M. Cain wrote:
I am trying to create a utility module that only loads functions when
they are first called rather than loading everything.  I have a bunch
of files in my utility directory with individual methods and for each I
have lines like this in __init__.py:

def calc_tax(*arg, **name):
    from calc_tax import calc_tax as _func_
    calc_tax = _func_
    return _func_(*arg, **name)
...

Well, you may well be "mired in premature optimization," but you _could_
do the following (you'll need to evaluate whether it addresses your
issues).

    def calc_tax(*arg, **kwargs):
        from calc_tax import calc_tax
        globals()['calc_tax'] = calc_tax
        return calc_tax(*arg, **kwargs)

But if you are terrifyingly clever, (or have enough motive*), you can
define a function, '_remote', So that your __init__.py contains:
      <some magic>
      ...
      _remote('some_tax')
      _remote('other', 'frogs')
      ...

* The pythonic "enough motive" is how redundant your "__init__.py"
looks.  The "DRY" (Don't Repeat Yourself) principle comes into effect.
The more your source looks like boilerplate, the more you should itch
to  replace the boilerplate.

--Scott David Daniels
[EMAIL PROTECTED]



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to