Я хотел бы спросить о
sup = super(self, self)
Python Cookbook 3rd от David Beazley & Brian K. Jones. Есть несколько таких примеров.Это сокращенный фрагмент кода из книги:
class MatchSignaturesMeta(type):
def __init__(self, clsname, bases, clsdict):
super().__init__(clsname, bases, clsdict)
sup = super(self, self)
for name, value in clsdict.items():
# ...
prev_dfn = getattr(sup, name, None)
# ...
class Root(metaclass=MatchSignaturesMeta):
pass
class A(Root):
def foo(self, x, y):
pass
# ...
в ходе эксперимента я знаю, что второй супер аргумент обязателен.sup печатается как:
<super: <class 'Root'>, <Root object>>
В документации super они говорят
"Если второй аргумент опущен, возвращаемый суперобъект является несвязанным."
«Связанный / несвязанный метод» (функция с 1-м параметром, связанным с экземпляром класса) знакома.Что такое «связанный объект»?
В примере создается класс Root.Я не вижу явного создания корневого объекта.Я хотел бы спросить, откуда появился объект Root (из вышеприведенного представления для печати выше)?
Использование Python 3.5.3 в Debian GNU / Linux 9.11 (stretch)