🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
3 messages
3 total messages Started by lux Thu, 03 May 2012 20:54
Funkcja super
#28416
Author: lux
Date: Thu, 03 May 2012 20:54
4 lines
1461 bytes
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ę.
Re: Funkcja super
#28417
Author: Roman Dobosz
Date: Fri, 04 May 2012 06:12
59 lines
2460 bytes
On Thu, 3 May 2012 13:54:27 -0700 (PDT)
lux <naukasymfony@gmail.com> wrote:

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

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.  
Re: Funkcja super
#28418
Author: lux
Date: Sat, 05 May 2012 17:33
65 lines
3056 bytes
On 4 Maj, 08:12, Roman Dobosz <gryf_esm...@spam-o2.pl> wrote:
> On Thu, 3 May 2012 13:54:27 -0700 (PDT)
>
> lux <naukasymf...@gmail.com> wrote:
> > 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ę.
>
> 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.

Dziękuję
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads