Я всегда настраивал метаклассы примерно так:
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__
вызван только созданием класса в метаклассе.