| патч для __init__ |
[27 Jul 2007|02:32pm] |
Пытаюсь сделать патчилку конструктора класса через ф-цию.
для всех классов которые надо патчить есть prepare() или подобный classmethod.
простая замена __init__ не подходит, т.к. надо вызывать и то что записано в оригинальном методе.
пока получилось сделать только так:
#!/usr/bin/env python
# -*- coding: koi8-r -*-
class X(object):
#@dec ... с декоратором всё просто, но нужно обойтись без изменений текста класса
def __init__(self):
print 'world'
def prepare():
orig_init = X.__init__ # сохранение X.__init__
def hacked_up_decoration(self):
print 'hello'
orig_init(self) # вызов конструктора
print '=^_^='
X.__init__ = hacked_up_decoration # замена конструктора
if __name__ == '__main__':
prepare()
x = X()
-------------
hello
world
=^_^=
-------------
можно ли сделать проще или другим способом?
прицепить декоратор через DecoratorTools не удалось ._.
|
|