Python相当于Ruby的define_method吗?


问题内容

是否有与Ruby等效的Python
define_method,它可以动态生成类方法?(如Wikipedia的Ruby示例代码所示


问题答案:

函数是Python中的一流对象,可以分配给类或实例的属性。与Wikipedia示例相同的方法之一是:

colours = {"black": "000",
           "red": "f00",
           "green": "0f0",
           "yellow": "ff0",
           "blue": "00f",
           "magenta": "f0f",
           "cyan": "0ff",
           "white": "fff"}

class MyString(str):
    pass

for name, code in colours.iteritems():
    def _in_colour(self, code=code):
        return '<span style="color: %s">%s</span>' % (code, self)
    setattr(MyString, "in_" + name, _in_colour)