For example lets say I have
class MyMaterials:
and my instances might need to look like
material_01
material_02
or
light_01
light_02
or
Mesh_01
Mesh_02 etc
If you do not know how many instances you are going to create from the
beginning, there is no way for you to know which of the instances you mentioned
above will get created. So having names for all of the instances will not help
you since you will never know what names are "safe" to use.
On the other hand, if you have all instances in a list, you can refer to them
by index and you know exactly how many of them you have.
If you would like to get instances by some name you gave to them, maybe
something like this will work:
def get_instance(name):
for instance in instance_list:
if instance.name == name:
return instance
return None
Another option might be to use a counter in the class that keeps
track of the number of instances:
class MyMaterial:
instances = 0
def __init__(self, name):
self.name = name
self.instance = MyMaterial.instances
MyMaterial.instances += 1
def __str__(self):
return "%s_%02i" % (self.name, self.instance)
m = MyMaterial("Brick")
print m
# "Brick_00"
print repr([MyMaterial("Stone") for _ in range(5)])
# "[Stone_01, Stone_02, Stone_03, Stone_04, Stone_05]"
It's not thread-safe, but it may do the trick.
-tkc
--
http://mail.python.org/mailman/listinfo/python-list