Я всегда устанавливал метаклассы примерно так:
class SomeMetaClass(type):
def __new__(cls, name, bases, dict):
#do stuff here
Но я только что наткнулся на метакласс, который был определен следующим образом:
class SomeMetaClass(type):
def __init__(self, name, bases, dict):
#do stuff here
Есть ли причина предпочесть одно другому?
Обновление. Имейте в виду, что я спрашиваю об использовании __new__ и __init__ в метаклассе. Я уже понимаю разницу между ними в другом классе. Но в метаклассе я не могу использовать __new__ для реализации кэширования, потому что __new__ вызывается только при создании класса в метаклассе.