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()是一个评估此类表达式的函数。这些类是持久的
答案 0 :(得分:2)
type
是您想要的元类。
klass = type('klass', (foo,), {'operation_1': foo.operation_1,
'operation_2': foo.operation_2})