Generating a unique identifier
stephen.lewitowski at googlemail.com
stephen.lewitowski at googlemail.com
Mon Sep 10 18:44:09 EDT 2007
On Sep 7, 1:03 pm, Steven D'Aprano <st... at REMOVE-THIS-
cybersource.com.au> wrote:
> I have an application that will be producing many instances, using them
> for a while, then tossing them away, and I want each one to have a unique
> identifier that won't be re-used for the lifetime of the Python session.
>
> I can't use the id() of the object, because that is only guaranteed to be
> unique during the lifetime of the object.
>
> For my application, it doesn't matter if the ids are predictable, so I
> could do something as simple as this:
>
> def unique_id():
> n = 1234567890
> while True:
> yield n
> n += 1
>
> unique_id = unique_id()
>
> while Application_Is_Running:
> make_an_object(id=unique_id())
> do_stuff_with_objects()
> delete_some_of_them()
>
> which is easy enough, but I thought I'd check if there was an existing
> solution in the standard library that I missed. Also, for other
> applications, I might want them to be rather less predictable.
>
> --
> Steven.
This is very simple. Use a class variable that increments every time a
new object is created. If you need to use it in a number of different
types of object then you could use the code below in a metaclass and
tag all of your classes with the metaclass. Unless you are making
billions of objects then i think that this should suffice.
class MyObj:
id_count = 0
def __init__(self):
self.id = self.id_count
MyObj.id_count += 1
print self.id, MyObj.id_count
MyObj()
MyObj()
More information about the Python-list
mailing list