I was trying to build a quick and dirty singleton in python 2.5. I defined a __new__ method for my class and returned the one and only instance in there of the desired subject. To my surprise __new__ was not called, at all. After some more digging it turns out that your class needs to inherit from object. See the example below.
class NoNew:
def __new__(cls):
print "New Called for NoNew"
class YesNew(object):
def __new__(cls):
print "New Called for YesNew"
NoNew()
YesNew()
Executing the above generates
$ python test.py
New Called for YesNew
As you can see there is no line with NoNew and you need to inherit from object to be able to override __new__.
Another interesting fact is that printing an object will output something that looks like a physical address and that can be used to ensure that your objects are a singleton. Writing unit test cases for this is harder and I decide it is not worth the time.