我正在構建一個專案,我試圖在宣告變數之前在變數中宣告類的名稱。
但是當我宣告變數時:-
klassName = MyClass
class klassName(models.Model):
title = models.CharField(max_length=30)
然后它使用KlassNameNot分配給它的變數。
然后我試過:-
className = 'MyClass'
klass = type(className, (object,), {'msg': 'foobarbaz'})
x = className()
class x():
title = models.CharField(max_length=30)
它正在顯示
NameError: name 'className' 未定義
我沒有找到任何宣告的檔案。
我確實按照This。但似乎沒有一個對我有用。
任何幫助將非常感激。先感謝您。
uj5u.com熱心網友回復:
要動態創建類,您可以使用type. 要動態創建具有相同名稱的變數或模塊成員,您可以使用globals()動態創建變數
globals()['className'] = type('className', (object,), {'foo': 'bar'})
動態創建模型可能稍微復雜一些,但為了方便起見,您可以使用抽象基類來定義所有欄位/方法
class Base(models.Model):
foo = models.CharField(max_length=100)
class Meta:
abstract = True
globals()['className'] = type('className', (Base, ), {'__module__': Base.__module__})
uj5u.com熱心網友回復:
在你的例子中:
klassName = MyClass
class klassName(models.Model):
title = models.CharField(max_length=30)
klassName 沒有參考,因為 MyClass 沒有定義。你可以說:
MyClass = klassName
class klassName(models.Model):
title = models.CharField(max_length=30)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/396920.html
