python - 在类中生成动态方法

标签 python python-2.7 code-generation

我想要一个具有动态方法的类。

从这些数组中:

prefix = ['android','iphone','blackberry'] 
method = ['AddToPush','DelFromPush','GetPushMessages']

我想创建一个类:

class MobileManager(object)

    def __init__(self):
        self.mobileLib = MobileLib()

    def androidAddToPush(self, args):
        self.mobileLib.AddToPush(args, 'android')

    def iphoneAddToPush(self, args):
        self.mobileLib.AddToPush(args, 'iphone')    

    def blackberryAddToPush(self, args):
        self.mobileLib.AddToPush(args, 'blackberry') 

   [...]

如何在运行时生成/创建这些方法?

最佳答案

如果您的前缀/方法集是在初始化时定义的,您可以尝试如下操作:

class MobileManager(object):
    def __init__(self):
        for prefix_name in prefix:
            for method_name in method:
                func = lambda self, args: getattr(self.mobileLib, method_name)(args, prefix)
                full_method_name = "%s%s" % (prefix, method_name)
                setattr(self, full_method_name, func)
        ...

如果您的动态方法变得更加复杂,那么 lambda 很快就会受到限制。

关于python - 在类中生成动态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8677834/

相关文章:

loops - Xtend 循环中断

python - 将变量写入CSV行python

python - 对 Tastypie 的 POST 请求返回一个非 SSL Location Header

python - 如何决定单击哪个单选按钮

python - python 中的 anagram 列表列表

c - 在 Windows shell 命令中嵌入 Python 代码

python - 如何在 django 中使用 handler404 View ?

java - 生成 Java 代码解析树并对其进行评估以进行测试

python - Selenium:在谷歌浏览器中上传文件

c - 如何自动生成C代码