Mark Mark - 2 months ago 5
Python Question

Pass Variable On Import

Let's say you have some time-consuming work to do when a module/class is first imported. This functionality is dependent on a passed in variable. It only needs to be done when the module/class is loaded. All instances of the class can then use the result.

For instance, I'm using rpy2:

import rpy2.robjects as robjects

PATH_TO_R_SOURCE = ## I need to pass this
robjects.r.source(PATH_TO_R_SOURCE, chdir = True) ## this takes time

class SomeClass:
def __init__(self, aCurve):
self._curve = aCurve

def processCurve(self):

Am I stuck creating a module level function that I call to do the work?

import someClass
x = someClass.SomeClass([1,2,3,4])

I gotta be missing something here. Thanks.


Having a module init function isn't unheard of. Pygame does it for the sdl initialization functions. So yes, your best bet is probably

import someModule
x = someModule.someClass(range(1, 5))