При обсуждении метаклассов the docs:
Вы можете, конечно, переопределить другие методы класса (или добавить новые методы); например, определение пользовательского метода
__call__()
в metaclass позволяет настраивать поведение при вызове класса, например. не всегда создавая новый экземпляр.
Мои вопросы: предположим, что я хочу иметь пользовательское поведение при вызове класса, например, кэширование вместо создания свежих объектов. Я могу сделать это, переопределив метод __new__
класса. Когда я хочу вместо этого определить метакласс с __call__
? Что этот подход дает, что не достижимо с помощью __new__
?