3
어렵습니다. 나는 메소드를 동적으로 생성 할뿐만 아니라 데코레이터를 연관시키고 자한다. 이것은 내가 출력은데코레이터로 동적 메서드 생성하기
import inspect
import types
class Dynamo(object):
pass
def call_me_dec(func):
print 'I am here'
return func
def add_dynamo(cls,i):
# @call_me_dec
def innerdynamo(self):
print "in dynamo %d" % i
return i
innerdynamo.__doc__ = "docstring for dynamo%d" % i
innerdynamo.__name__ = "dynamo%d" % i
setattr(cls, innerdynamo.__name__, innerdynamo)
def add_decorators(cls):
for name, fn in inspect.getmembers(cls):
if isinstance(fn, types.UnboundMethodType):
setattr(cls, name, call_me_dec(fn))
for i in range(2):
add_dynamo(Dynamo, i)
add_decorators(Dynamo)
d=Dynamo()
d.dynamo0()
d.dynamo1()
뭘하려 :
I am here
I am here
in dynamo 0
in dynamo 1
예상 출력 :
I am here
in dynamo 0
I am here
in dynamo 1
설명해주십시오 왜 이런 일이 어떻게 내가 원하는 결과를 얻을 수 있나요?