Обратите внимание, что, поскольку различные метаклассы в Python обычно сложно объединить, это может быть полезно, если разрешить комбинирование созданного пользователем метакласса с библиотечным или stdlib-классом, при этом этот класс не должен быть явно объявлен как родительский для первого:

авно открыл метаклассы в Python.

По сути, метакласс в python - это класс, который создает класс. Есть много полезных причин, по которым вы хотели бы сделать это - любой тип инициализации класса, например. Регистрация классов на фабриках, комплексная проверка атрибутов, изменение работы наследования и т. Д. Все это становится не только возможным, но и простым.

Но в python метаклассы также являются простыми классами. Итак, я начал задаваться вопросом, может ли абстракция с пользой идти выше, и мне кажется, что она может и что:

метакласс соответствует или реализует роль в шаблоне (как в языках шаблонов GOF).мета-метакласс - это сам образец (если мы позволим ему создавать кортежи классов, представляющих абстрактные роли, а не только один класс)мета-мета-метакласс являетсяфабрика узоровчто соответствует группировке GOF-паттернов, например, Творческий, Структурный, Поведенческий. Фабрика, на которой вы можете описать случай проблемы определенного типа, и она даст вам набор классов, которые ее решат.мета-мета-мета-метакласс (насколько я мог судить), этофабрика картины фабрикифабрика, к которой вы, возможно, могли бы описать тип вашей проблемы, и это даст вам фабрику шаблонов, которую можно спросить.

Я нашел кое-что об этом в Интернете, но в основном не очень полезно. Одна проблема состоит в том, что разные языки определяют метаклассы немного по-разному.

Кто-нибудь еще использовал такие метаклассы в python / elsewhere, или видел, как это используется в дикой природе, или думал об этом? Какие есть аналоги на других языках? Например. в C ++ насколько глубока может быть рекурсия шаблона?

Я бы очень хотел исследовать это дальше.

Ответы на вопрос(5)

Ваш ответ на вопрос