簡體   English   中英

__metaclass__在創建具有類型(“ Test”,(Base),{'__ metaclass __':Meta,…})的類時不起作用

[英]__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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM