[Python-de] super()?

Martin v. Loewis martin at v.loewis.de
Thu Sep 5 20:32:22 EDT 2002


tanzer at swing.co.at (Christian Tanzer) writes:

> immer behauptet, `D.save` zu liefern, obwohl es in Wirklichkeit
> `B.save` und `A.save` liefern muß (ein nachfolgender Aufruf zeigt
> das). Verstehst Du das, Martin? Bug oder Feature?

Sowas in der Art. Es hat nichts mit super zu tun:

>>> class A:
...   def foo(self):pass
...
>>> class B(A):pass
...
>>> b=B()
>>> b.foo
<bound method B.foo of <__main__.B instance at 0x402dc30c>>

Das wiederum liegt daran, dass b.foo.im_class nun B ist. Das liegt
an den Deskriptoren: b.foo ist nun (falls b.__dict__['foo'] scheitert)

b.__class__.foo.__get__(b, B)

Wenn man an __get__ *nicht* B übergeben würde, wären Klassenmethoden
nicht möglich.

Ciao,
Martin




More information about the Python-de mailing list