相关疑难解决方法(0)

Python中的动态/运行时方法创建(代码生成)

我需要在运行时为方法生成代码.能够运行任意代码并拥有文档字符串非常重要.

我想出了一个解决方案相结合exec,并setattr,这里是一个虚拟的例子:

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__
Run Code Online (Sandbox Code Playgroud)

是否有更好/更安全/更惯用的方式来实现相同的结果?

python metaprogramming exec

42
推荐指数
3
解决办法
4万
查看次数

Python:在运行时动态创建函数

如何在Python中动态创建函数?

我在这里看到了一些答案,但我找不到一个可以描述最常见情况的答案.

考虑:

def a(x):
    return x + 1
Run Code Online (Sandbox Code Playgroud)

如何即时创建这样的功能?我需要compile('...', 'name', 'exec')吗?那么呢?从编译步骤创建一个虚函数并替换它的代码对象?

或者我应该使用types.FunctionType?怎么样?

我想自定义一切:参数的数量,它们的内容,函数体中的代码,结果,...

python runtime function

37
推荐指数
6
解决办法
4万
查看次数

标签 统计

python ×2

exec ×1

function ×1

metaprogramming ×1

runtime ×1