[英]__metaclass__ not worked when create class with type(“Test”, (Base,), {'__metaclass__':Meta, …})
cls = type("Test", (Base,), {"__metaclass__": Meta, "a": 1, ...})
我想用Meta類對第3個參數中的attrs進行檢查,但這似乎不起作用,是否還有其他方法?
Meta
類是type
的子type
。 因此,創建元類的類型就是調用元類:
cls = Meta("Test", (Base,), {"a": 1, ...})
您應該通過調用Meta
(aka type.__class__.__new__(Meta, "Test", (Base,), {"__metaclass__": Meta, "a": 1})
來創建Test
類。
如果您有可能__metaclass__
的字典,則可以使用以下代碼:
members = {"__metaclass__": Meta, "a": 1, ...}
metaclass = members.pop('__metaclass__', type)
cls = metaclass("Test", (Base,), members)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.