Originally published at
Creotiv lives here. Please leave any
comments there.
Раньше почемуто казалось что метод _new_ в Python всегда должен возвращать инстанс собственного класа. На самом деле это вкорне неверно. Походу или мой склероз прогрессирует или нужно внимательней читать документацию.
Эта фича дает реально нехилый буст для красивого АПИ
Вот собственно примерчик:
class C(object):
def __init__(self):
print '_init_ C'
class A(C):
def __init__(self):
super(A,self).__init__()
print '_init_ A'
def echo(self):
print 'echo A'
class B(object):
def __new__(cls):
self = A()
return self
def __init__(self):
print '_init_ B'
b = B()
print b
b.echo()
Вывод такой:
> _init_ C
> _init_ A
>
> echo A