如何動態創建我的類的子類并為其__init_subclass__()方法提供參數?示例類:class MyClass: def __init_subclass__(cls, my_name): print(f"Subclass created and my name is {my_name}")通常我會這樣實現我的子類:class MySubclass(MyClass, my_name="Ellis"): passmy_name但是動態創建使用元類的子類時如何傳入MyClass?通常我可以使用,type()但它沒有提供my_name.MyDynamicSubclass = type("MyDynamicSubclass", (MyClass,), {})
1 回答

胡說叔叔
TA貢獻1804條經驗 獲得超8個贊
的基本文檔type
沒有提到它接受無限數量的僅限關鍵字的參數,您可以通過語句中的關鍵字提供這些參數class
。唯一暗示的地方是在創建類對象部分的數據模型中:
通過執行類主體填充類命名空間后,通過調用創建類對象
metaclass(name, bases, namespace, **kwds)
(此處傳遞的附加關鍵字與傳遞給的關鍵字相同__prepare__
)。
通常,您不會將此功能與type
以下原因一起使用__init_subclass__
:
默認實現
object.__init_subclass__
不執行任何操作,但如果使用任何參數調用它會引發錯誤。
由于您已經覆蓋了默認實現,因此您可以將動態類創建為
MyDynamicSubclass?=?type("MyDynamicSubclass",?(MyClass,),?{},?my_name="Ellis")
添加回答
舉報
0/150
提交
取消