Le 29 Mar 2005 09:50:46 -0800, Tian a écrit : > I want to create a object directory called Context in my program, which > is based on a dict to save and retrieve values/objects by string-type > name. I have the definition like this: > > utils.py > -------------------- > global sysctx # you are in the global scope of the utils module. This "global sysctx" # has no meaning, replace by sysctx = None # create a global 'sysctx' name in utils namespace > > class Context: class Context(object): # why not use "new-style" classes, we are in 2005 > def __init__(self): # I suppose that there is some __doc__ and code :-) > def set(self, name, obj, overwrite=True): > def get(self, name): > def has(self, name): > > def init(): > global sysctx > sysctx = Context() > > def getContext(): > global sysctx > return sysctx > --------------------- > > init() is called somewhere at the beginning of the program. > In other modules, i want to use this in the following manner, > > from utils import * Please do not use the from module import * form from utils import getContext > getContext().set(...) You can also restrict the exported names of utils.py by adding a __all__ = ('getContext',) in utils.py. > > but SOMETIMES I met following error located in "getContext()" > NameError: global name 'sysctx' is not defined > > I found that when a module is in the same directory as utils.py, when I > can simply use "utils" for importing, there is no such problem. But > when i was writing a module in a deeper directory than utils.py, which > has to use the full module name for importing, such as: > > from myproj.utils import * > getContext().set(...) > > I got this error. > > What should I do to correct that? See above :-) and post a follow-up to report if the issue is solved. > PS sorry for bad english. I am not a native speaker. -- http://mail.python.org/mailman/listinfo/python-list