【发布时间】:2014-09-21 01:18:22
【问题描述】:
我想在运行时修改一个类的初始化器。像这样的代码有什么潜在的问题吗?我是装饰器的新手,所以不太确定。
class Object:
def __init__(self):
print "do something"
@classmethod
def modify(cls, f):
__init___old = cls.__init__
def __init__(self):
__init___old(self)
f(self)
cls.__init__ = __init__
return f
@Object.modify
def f(self):
print "do something else"
【问题讨论】:
-
这毫无意义。为什么这被实现为装饰器?你到底想做什么(在更广泛的背景下)?
-
我想在类级别而不是实例级别实现 register-handler-with-decorator 模型。另外,在我的实际代码中,函数被包装了,我只是想对我不确定的代码元素提出问题。
标签: python class metaprogramming decorator