Python __new__ method magic

Aug 10, 2011 10:29


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

python, Программирование, magic

Previous post Next post
Up