python - 未绑定(bind)的 super 对象,super(self, self)

我想问一下

sup = super(self, self)

David Beazley 和 Brian K. Jones 的 Python Cookbook 3rd 有很多这样的例子。这是书中一个代码的缩写摘录:

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
    # ...

通过实验我知道第二个 super 参数是强制性的。 sup 打印为:

<super: <class 'Root'>, <Root object>>

在文档中super他们说

"如果省略第二个参数,则返回的超对象是 未绑定(bind)。”

“绑定(bind)/未绑定(bind)方法”(第一个参数绑定(bind)到类实例的函数)很熟悉。 什么是“绑定(bind)对象”?

在示例中,正在创建 Root 类。我没有看到明确的 Root 对象创建。我想问 Root 对象(来自上面的 sup 可打印表示)来自哪里?

在 Debian GNU/Linux 9.11 (stretch) 上使用 Python 3.5.3

相关文章:

c# - 配置生成器 - 无法加载程序集 - .Net Framework

r - 如何更新 R shiny 中 for 循环内的无功输出

.net - ML .Net 无法重新训练神经网络

php - 如何在 PHP 中使用 Google 我的业务 API 发布问题的新答案

keras - 卷积自动编码器keras的高损失

reactjs - 如何使用带有反应最终形式的自定义 radio 组件?

microsoft-graph-api - 更新和删除日历事件而不向与会者发送通知

amazon-web-services - 调用端点 url 时找不到 AWS API Gatewa

visual-studio-code - 如何使用 Visual Studio Code + VSC

azure-sql-database - 目前无法检索该地区的定价配置数据。请重试