On 2006-01-31, Farshid Lashkari <[EMAIL PROTECTED]> wrote: > You need to declare _expensiveObject as global inside your function. > Whenever you assign something to a variable that resides in the global > scope inside a function, you need to declare it as global at the > beginning of the function. So your function should look like this > > def ExpensiveObject(): > global _expensiveObject > if not(_expensiveObject): > _expensiveObject = "A VERY Expensive object" > > return _expensiveObject > > The documentation will no doubtedly explain it better than I have >
Not really. If I'd understood the docs, I wouldn't need to ask here. Okay, that works in the module where I define the function. But if I import the module: # expensive Object User import Expensive print Expensive.ExpensiveObject() I get the same exception. That approach most likely isn't going to work for me, as I need to be able to reuse the costly (to create) object. Okay THIS seems to be working for me: # expensive Object Module _expensiveObject = None def ExpensiveObject(): try: retval = _expensiveObject except UnboundLocalError: _expensiveObject = "A VERY Expensive object" retval = _expensiveObject return retval if __name__ == '__main__': print _expensiveObject print ExpensiveObject() Which gives me: >>> import Expensive >>> a = Expensive.ExpensiveObject() >>> b = Expensive.ExpensiveObject() >>> a == b True >>> a is b True >>> I'll try it with my actual class instance to verify. Anyone see anything I'm missing? Thanx -- http://mail.python.org/mailman/listinfo/python-list