[Tutor] Global values & import scope
Wesley Brooks
wesbrooks at gmail.com
Wed Jan 24 15:11:44 CET 2007
Thanks for your help I tested what you two said as follows and it
worked great. Thank you.
(Bellow in file TEST_ClassID.py)
class AssemblyItem:
itemID = 0
def __init__(self):
self.ID = "assemblyItem" + str(AssemblyItem.itemID)
AssemblyItem.itemID += 1
def ReturnID(self):
return self.ID
(Bellow in file TEST_ImportID1.py)
from TEST_ClassID import AssemblyItem
class Parent1:
def __init__(self):
self.testList = []
def PrintID(self):
self.testList.append(AssemblyItem())
print self.testList[-1].ReturnID()
(Bellow in file TEST_ImportID2.py)
from TEST_ClassID import AssemblyItem
class Parent2:
def __init__(self):
self.testList = []
def PrintID(self):
self.testList.append(AssemblyItem())
print self.testList[-1].ReturnID()
(Bellow, the commands run in the python terminal in the same directory)
>>> from TEST_ClassID1 import Parent1
>>>from TEST_ClassID2 import Parent2
>>>a = Parent1()
>>>b = Parent2()
>>>a.PrintID()
assemblyItem0
>>>a.PrintID()
assemblyItem1
>>>b.PrintID()
assemblyItem2
>>>b.PrintID()
assemblyItem3
>>>a.PrintID()
assemblyItem4
>>>b.PrintID()
assemblyItem5
Thanks again for your help.
Wesley Brooks.
On 24/01/07, Kent Johnson <kent37 at tds.net> wrote:
> Wesley Brooks wrote:
> > Dear Users,
> >
> > I'm using global values to create a unique ID, or name for each
> > instance of a class. If I import the following in one file and test it
> > it works fine. If the following class was imported in two different
> > files run by the same program would each instance of the class have a
> > unique name, or would they only be unique within the scope of the file
> > which contains the import of the bellow class?
> >
> > itemID = 0
> > class AssemblyItem:
> > def __init__(self):
> > global itemID
> > self.ID = "assemblyItem" + str(itemID)
> > itemID += 1
>
> That will work fine. When a module is imported twice, the second import
> received a cached copy of the same module; the module is only
> instantiated once. The variable itemID will just exist in one place, in
> the single instance of the module, and AssemblyItems created from
> different clients will all share the same counter.
>
> Kent
>
>
More information about the Tutor
mailing list