Hi all, I created a class which creates a relative unique id string, now my program just works fine and as expected but somehow I get the feeling that I misused the __repr__ since I guess people expect to 'execute' a function in an instance instead of using it's representation string of the instance itself, could you elaborate whether you find this bad practice and if yes what would have been a better way to do it?
TIA ----- script ----- > import string > import time > > class IDGenerator(object): > """(serverID,subversion_length) > Create an ID from the server name, datetimestamp and version number. > Calling the instance returns the ID using the __repr__ class function > > Example usage: > >>> id = idgen('01',4) > >>> id > 01_20060424_151903_1 > >>> id > 01_20060424_151905_2 > >>> id > 01_20060424_151905_3 > >>> id > 01_20060424_151906_4 > >>> id > 01_20060424_151907_1 > >>> > >>> id = idgen(04,100) > >>> id > 4_20060424_152043_001 > > """ > > def __init__(self,serverID,subversion_length): > self.ID = str(serverID) > self.length = int(subversion_length) > fill_length = len(str(self.length)) > > def fill(number): > return(string.zfill(number,fill_length)) > self.fill = fill > > > def __repr__(self): > # If the subversion length has been reached or the generator has not > # been defined, (re)define it, otherwise return the next value of the > # subversion. > try: > return_value = self.range_gen.next() > > except: > self.range_gen = ( number for number in range(1,self.length+1) ) > return_value = self.range_gen.next() > > # Create the version stamp. > return_value = self.ID +\ > time.strftime("_%Y%m%d_%H%M%S_",time.gmtime())+\ > self.fill(return_value) > > # And return it. > return(return_value) ----- script ----- -- mph -- http://mail.python.org/mailman/listinfo/python-list