這個問題在這里已經有了答案: 從動態匯入的模塊中的類的字串名稱動態實體化? (9 個回答) 5 小時前關閉。
自4 小時前起,社區正在審查是否重新提出此問題。
我想用資料庫中的值初始化一個實體。我知道類名,因為它與表名相同。
class MyClass():
def __init__(self, arg1, arg2, arg3):
...
values = (arg1, arg2, arg3)
className = "MyClass"
instance = ?
感謝您的幫助。
uj5u.com熱心網友回復:
我將使用元類來注冊資料庫模型的每個實體,并使用字典來獲取一個類,給定一個名稱:
class Models(type):
classes = {}
def __new__(cls, clsname, bases, attrs):
newclass = super(Models, cls).__new__(cls, clsname, bases, attrs)
Models.register(newclass) # here is your register function
return newclass
@classmethod
def register(cls, new_class):
Models.classes[new_class.__name__] = new_class
class MyClass(metaclass=Models):
def __init__(self, arg1, arg2, arg3):
...
values = ("a", "b", "c")
className = "MyClass"
instance = Models.classes.get(className)(*values)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/516101.html
標籤:Pythonsqlite
