🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #28417

Re: Funkcja super

#28417
From: 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.  
Technical Details
Message-ID: <20120504081250.dc9ec5f2.gryf_esm-no@spam-o2.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED!not-for-mail
References: <3f7a6aeb-604c-4563-979e-1e26ea3b785c@i8g2000vbm.googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED!not-for-mail
From: Roman Dobosz <gryf_esm-no@spam-o2.pl>
Newsgroups: pl.comp.lang.python
Subject: Re: Funkcja super
Date: Fri, 4 May 2012 08:12:50 +0200
Organization: ICM, Uniwersytet Warszawski
Lines: 59
Message-ID: <20120504081250.dc9ec5f2.gryf_esm-no@spam-o2.pl>
References: <3f7a6aeb-604c-4563-979e-1e26ea3b785c@i8g2000vbm.googlegroups.com>
NNTP-Posting-Host: ecb129.neoplus.adsl.tpnet.pl
Mime-Version: 1.0
X-Trace: news.icm.edu.pl 1336111970 18076 83.22.217.129 (4 May 2012 06:12:50 GMT)
X-Complaints-To: usenet@news.icm.edu.pl
NNTP-Posting-Date: Fri, 4 May 2012 06:12:50 +0000 (UTC)
X-Newsreader: Sylpheed 3.1.2 (GTK+ 2.24.10; i686-pc-linux-gnu)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit