关于类:在python中’返回的’超级对象’是什么意思?

What does it mean by the 'super object returned is unbound' in python?

根据docs.python.org http:/ / / 2 /图书馆/ functions.html #超

If the second argument is omitted, the super object returned is
unbound.

这是超级(型)。

我想知道什么时候它是无界和有界的。


编辑:在super的上下文中,下面的大部分内容都是错误的。见约翰Y的评论。

super(Foo, a).bar从方法解析顺序(mro)中的下一个对象返回名为bar的方法,在本例中绑定到a对象,即Foo的实例。如果省略了a,则返回的方法将被解除绑定。方法只是对象,但可以绑定或取消绑定。

未绑定方法是未绑定到类实例的方法。它不接收作为隐式第一个参数的类实例。

仍然可以调用未绑定的方法,但需要将类的实例显式传递为第一个参数。

下面给出了一个绑定和未绑定方法的示例以及如何使用它们。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
In [1]: class Foo(object):
   ...:     def bar(self):
   ...:         print self
   ...:        

In [2]: Foo.bar
Out[2]: <unbound method Foo.bar>

In [3]: a = Foo()

In [4]: a.bar
Out[4]: <bound method Foo.bar of <__main__.Foo object at 0x4433110>>

In [5]: a.bar()
<__main__.Foo object at 0x4433110>

In [6]: Foo.bar()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-bb3335dac614> in <module>()
----> 1 Foo.bar()

TypeError: unbound method bar() must be called with Foo instance as first argument (got nothing instead)

In [7]: Foo.bar(a)
<__main__.Foo object at 0x4433110>


"unbound"表示它将返回类,而不是类的实例。