__metaclass__是Python2的寫法,代表指定該類的元類。Python3中對應的寫法是class 要定義的類名(metaclass=元類名)
元類是生成類的工廠,就像類是生成對象實例的工廠。在Python中所有類的默認元類是type,如果需要自定義類的生成方式,例如給類添加特定的屬性,那麽就需要替換默認元類為妳自己編寫的元類,此時就要用到metaclass語法。壹個重要的利用場景就是ORM框架,因為數據庫模型類的編寫者是無法預知這個類可能有哪些字段的,所以必須要利用元類動態地生成這個類。
關於元類的說明可以看:網頁鏈接