Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Funkcja super

85 views
Skip to first unread message

lux

unread,
May 3, 2012, 4:54:27 PM5/3/12
to
Jestem początkujący w Pythonie, jak mam rozumieć funkcję super? To co
jest w dokumentacji jest dla mnie średnio zrozumiałe, jeśli ktoś może
wspomóc mnie prostym, trafnym przykładem zastosowania tej funkcji to
dziękuję.

Roman Dobosz

unread,
May 4, 2012, 2:12:50 AM5/4/12
to
http://docs.python.org/library/functions.html#super

Czyli: mamy klasę Foo, posiadającą metodę foo(), po której dziedziczy
klasa Bar również posiadająca metodę foo:
>>> class Foo(object):
... def foo(self):
... print "f"
...
>>> class Bar(Foo):
... def foo(self):
... print "b"
...
>>>

Stworzenie obiektu klasy Bar i wywołanie metody foo() spowoduje
wyświetlenie tylko napisu "b".

>>> obj = Bar()
>>> obj.foo()
b
>>>

Natomiast:

>>> class Bar(Foo):
... def foo(self):
... super(Bar, self).foo()
... print "b"
...
>>> obj = Bar()
>>> obj.foo()
f
b
>>>

Czyli, super spowodowało uruchomienie metody (foo()) na rzecz obiektu
po którym dziedziczy Bar – stąd pierwszy argument jaki super
przyjmuje to Bar a nie Foo. Oczywiście ten przykład jest bardzo
trywialny, ale nietrudno sobie wyobrazić sytuację, gdzie zamiast
printów znajduje się konkretny kod robiący istotne rzeczy.

To tylko wierzchołek góry lodowej, dokładne wyjaśnienie jak z tego
korzystać, żeby się nie skaleczyć znajdziesz pod linkami:

https://rhettinger.wordpress.com/2011/05/26/super-considered-super/
http://fuhm.net/super-harmful/

--
-^- _ coś tam w tle sobie gra, np:
_ /O)_\// Thomas "Drax" Mogensen - Heaven
(_(|__(_(_) grf.

lux

unread,
May 5, 2012, 1:33:13 PM5/5/12
to
On 4 Maj, 08:12, Roman Dobosz <gryf_esm...@spam-o2.pl> wrote:
> On Thu, 3 May 2012 13:54:27 -0700 (PDT)
>
> po którym dziedziczy Bar - stąd pierwszy argument jaki super
> przyjmuje to Bar a nie Foo. Oczywiście ten przykład jest bardzo
> trywialny, ale nietrudno sobie wyobrazić sytuację, gdzie zamiast
> printów znajduje się konkretny kod robiący istotne rzeczy.
>
> To tylko wierzchołek góry lodowej, dokładne wyjaśnienie jak z tego
> korzystać, żeby się nie skaleczyć znajdziesz pod linkami:
>
> https://rhettinger.wordpress.com/2011/05/26/super-considered-super/http://fuhm.net/super-harmful/
>
> --
> -^- _ coś tam w tle sobie gra, np:
> _ /O)_\// Thomas "Drax" Mogensen - Heaven
> (_(|__(_(_) grf.

Dziękuję
0 new messages