Tag: 元程序

Python中的dynamic/运行时方法创build(代码生成)

我需要在运行时为方法生成代码。 能够运行任意代码并拥有文档string是非常重要的。 我想出了一个结合了exec和setattr的解决scheme,下面是一个虚拟的例子: class Viking(object): def __init__(self): code = ''' def dynamo(self, arg): """ dynamo's a dynamic method! """ self.weight += 1 return arg * self.weight ''' self.weight = 50 d = {} exec code.strip() in d setattr(self.__class__, 'dynamo', d['dynamo']) if __name__ == "__main__": v = Viking() print v.dynamo(10) print v.dynamo(10) print v.dynamo.__doc__ 是否有一个更好/更安全/更习惯的方式来达到相同的结果?