Hi, I'm been trying to create some custom classes derived from some of python's built-in types, like int and list, etc. I've run into some trouble, which I could explain with a couple simple examples. Lets say I want an int-derived class that is initilized to one greater than what it's constructor is given:
class myint(int): def __new__(cls, intIn): newint = int(intIn+1) return int.__new__(cls, newint) print myint(3), myint(10) Okay, seems to do what I want. Now, lets say I want a list class that creates a list of strings, but appends "_" to each element. I try the same thing: class mylist(list): def __new__(cls, listIn): newlist = list() for i in listIn: newlist.append(str(i) + "_") print "newlist: ", newlist return list.__new__(cls, newlist) print mylist(("a","b","c")) Doesn't seem to work, but that print statement shows that the newlist is what I want... Maybe what I return from __new__ is overwritten in __init__? Could someone enlighten me as to why - and why this is different than the int case? Thanks, Ken -- http://mail.python.org/mailman/listinfo/python-list