new() предназначен главным образом для того, чтобы позволить подклассам неизменяемых типов (например, int, str или tuple) настраивать создание экземпляра. Он также обычно переопределяется в пользовательских метаклассах, чтобы настроить создание класса.
Пример:
class Foo(object): def __new__(cls, *args, **kwargs): print "Creating Instance" instance = super(Foo, cls).__new__(cls, *args, **kwargs) return instance def __init__(self, a, b): self.a = a self.b = b def bar(self): pass
Вывод:
»i = Foo(2, 3)
Creating Instance