【发布时间】:2011-08-04 19:37:12
【问题描述】:
假设我有一个这样的字典列表:
[
dict(name='Person', title='Person class'),
dict(name='Employee', title='Employee class')
]
我想创建类;一个名为 Person 的属性标题设置为“Person class”,另一个名为 Employee 的类的标题设置为“Employee class”。类的名称可以是任何名称,但类将具有的属性的名称是已知的,在本例中为标题。
我最终想要的是一个动态创建的类的新列表;
classes = [Person, Employee]
好像这个类是手动定义的:
class Person:
title = 'Person class'
可以像这样实例化:
>>> x = classes[0]()
>>> print x.title
"Person class"
好像这还不够糟糕,我想将在不同类中定义的方法分配给动态创建的类:
class X:
def sum(self, a, b):
print self
return a+b
>>> x = X()
>>> x.sum(1,2)
__main__.x
3
>>> classes[0].sum = X.sum
>>> classes[0].sum(1,2)
__main__.Person
3
我知道上面的方法行不通 - 也许它甚至没有意义。但它可以做到吗 - 将一个类中定义的方法分配给不同的类?
【问题讨论】:
-
你真正想做什么?