我想要一个具有动态方法的类。
从这些数组中:
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/