Я прочитал сообщения вроде этих:
- Что такое метакласс в Python?
- Каковы ваши (конкретные) прецеденты для метаклассов в Python?
- Python Super отличный, но вы не можете его использовать
Но почему-то я смутился. Многие путаницы вроде:
Когда и зачем мне нужно делать что-то вроде следующего?
# Refer link1
return super(MyType, cls).__new__(cls, name, bases, newattrs)
или
# Refer link2
return super(MetaSingleton, cls).__call__(*args, **kw)
или
# Refer link2
return type(self.__name__ + other.__name__, (self, other), {})
Как супер работает точно?
Что такое реестр классов и unregistry в link1 и как именно он работает? (Я думал, что это имеет какое-то отношение к singleton. Возможно, я ошибаюсь, будучи на фоне C. Мой стиль кодировки по-прежнему представляет собой смесь функционального и OO).
Каков поток создания экземпляра класса (подкласс, метакласс, супер, тип) и вызов метода (
metaclass->__new__, metaclass->__init__, super->__new__, subclass->__init__ inherited from metaclass
) с хорошо прокомментированным рабочим кодом (хотя первая ссылка довольно близка, но она не говорит о ключевом слове cls и супер (..) и реестре). Предпочтительно пример с множественным наследованием.
P.S.: Я сделал последнюю часть как код, потому что Stack форматирование переполнения конвертировало текст metaclass->__new__
to metaclass → новый