我有一個創建從它的參數派生類的函數:如何動態設置類名?
def factory(BaseClass) :
class NewClass(BaseClass) : pass
return NewClass
現在,當我用它來創建新的類,這些類都被命名爲相同的,實例看起來像他們具有相同的類型:
NewA = factory(ClassA)
NewB = factory(ClassB)
print type(NewA()) # <class __main__.NewClass>
print type(NewB()) # <class __main__.NewClass>
正確修復手動設置__name__
屬性?
NewA.__name__ = 'NewA'
print type(NewA()) # <class __main__.NewA>
我還有什麼其他的事情需要設置嗎?
如果NewClass中的類定義非常長,看起來有點笨重。我將不得不將所有的方法累加到一個字典中(我假設doc字符串也在那裏,在'__doc __'''下)。 – kiyo 2011-03-18 14:24:55
還有,如果NewClass中的方法必須動態引用BaseClass的方法呢? – kiyo 2011-03-18 14:34:51
'type'用於創建具有可變基本列表的類;這完全是錯誤的工具。 – 2011-03-18 14:40:55