2017-05-15 38 views
0

這裏是我的代碼:如何使用動態命名基礎創建元類?

class Tb(object): 
    def __init__(self, name): 
     self.name=name 
    def foo(self): 
     return 0 

class Tb1(Tb): 
    def foo(self): 
     return 1 

met=type('Tb1', (Tb1,), {}) 
a=met('aaa') 

print(a.foo()) 

有沒有辦法在這裏使用動態命名基地:met=type('Tb1', (Tb1,), {})met=type('Tb1', (STRING_CLASS_NAME OR? ,), {})

回答

-1

我找到了答案:

met=type('Tb1', (eval('Tb1'),), {}) 
+0

不要使用'的eval( )'。你可以在某處(和'type(name,base,{})'使用'base =(Tb1,)',或者如果你必須使用字符串,請參閱重複的。 –

+0

我需要一個字符串值(動態)不能使用你的變種。 –

+0

是的,這就是我指出重複的原因。 –