python,动态实现onthefly上的一个类

时间:2011-04-18 07:24:31

标签: python methods

Flocks,我们有一个框架,允许我们的研究人员在类中更改方法(操作)以满足他们的需求,同时保存这些更改。例如,考虑下面的类foo的定义。 (版本1和版本2)

class foo:
   #class version 1
   def operation_1(self):
       # version 1
        pass
   def operation_2(self):
       # version 1
       pass

class foo:
     # class version 2
     def operation_1(self):
        # version 2
        pass
     def operation_2(self):
        # version 2
        pass

另一位研究人员可能希望他的班级如下所示; (他正在使用版本1中的方法和版本2中的另一种方法)

class foo:
    # class version 3
    def operation_1(self):
        # version 1
        pass
    def operation_2(self):
       # version 2
        pass

Currenlty必须复制并粘贴源代码。我正在寻找一种方法来概括这一点。可能像

  klass = foo()
  klass.operation_1 = foo.operation_1 #  from ver 1 of foo
  klass.operation_2 = foo.operation_2 #  from ver 2 of foo
  evaluate(klass)

并且可能evaluate()是一个评估此类表达式的函数。这些类是持久的

1 个答案:

答案 0 :(得分:2)

type是您想要的元类。

klass = type('klass', (foo,), {'operation_1': foo.operation_1,
  'operation_2': foo.operation_2})