🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: python vs php - potrzebne argumenty

#26767
From: Jaroslaw Zabiello
Date: Sun, 01 Nov 2009 23:28
61 lines
3273 bytes
Dnia 01-11-2009 o 20:00:29 pakalk <pakalk@gmail.com> napisał(a):

> Poza tym, to nie ma nic takiego jak protected, przynajmniej w Py2.6 -
> mylę się?
>
> class ProtTest:
>     _x = "Zmienna chroniona?"
>
>     def _foo( self ):
>         return "Funkcja chroniona?"
>
> o = ProtTest()
>
> print o._x
> print o._foo()

Tylko, że tak będzie pisał tylko ktoś kto nie ma pojęcia o Pythonie. Każdy  
pythonista dobrze wie, że nie należy wywoływać tak nazwanych atrybutów  
jakby to były atrybuty publiczne. Każdy (po nazwie) od razu widzi, że to  
nie jest atrybut publiczny i po prostu tak się to traktuje. To wszystko  
kwestia umowy. Ale aby to wiedzieć, trzeba wpierw chociaż poczytać sobie o  
Pythonie i jego założeniach (btw, klas też się tak od dawna nie tworzy  
tak, jak w twym przykładzie).

Te wszystkie kwalifikatory protected i private to kwestia konwencji. W  
Pythonie wszystkie atrybuty są publiczne z definicji. Co nie znaczy, że  
można przez pomyłkę coś nadpisać. Nie, trzeba to chcieć, zrobić celowo.
Np.

>>> class ProtTest(object):
...   __x = "Zmienna prywatna"
...
>>> o = ProtTest()
>>> o.__x
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
AttributeError: 'ProtTest' object has no attribute '__x'
>>> o._ProtTest__x
'Zmienna prywatna'

Z drugiej strony, jak ktoś chce, to w PHP5 też łatwo uzyska dostęp do jego  
"atrybutów chronionych":


<?php
class ProtTest {
   private $priv = "Zmienna prywatna?";
   protected $prot = "Zmienna chroniona?";
}
$o = new ProtTest();
$a = (array)$o;
print $a["\0ProtTest\0priv"]; # => Zmienna prywatna?
print $a["\0*\0prot"]; # => Zmienna chroniona?
?>


Więc, nie rozumiem tu twojej krytyki Pythona. Poza tym upada ona zupełnie  
przy Ruby, który posiada te kwalifikatory dostępu.

-- 
JZ http://blog.zabiello.com
Technical Details
Message-ID: <op.u2qotzozeaqjf2@macbook-pro-15-zbiru.local>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail
References: <h83in7$rl3$1@inews.gazeta.pl> <b9dc7116-39db-474f-9282-8862b3f1cad2@d5g2000yqm.googlegroups.com> <a501db87-9ccf-4694-a8f8-330a67cdc839@15g2000yqy.googlegroups.com> <7aa62383-88c2-4138-89d6-594112504075@g27g2000yqn.googlegroups.com> <op.u2nhqrhyeaqjf2@macbook-pro-15-zbiru.local> <97ad13b9-95bf-4c61-8a1b-59c7c57e8499@s31g2000yqs.googlegroups.com> <op.u2oi93ceeaqjf2@macbook-pro-15-zbiru.local> <12b7fbaa-206c-4b39-8868-4e3b96eea704@37g2000yqm.googlegroups.com> <op.u2p83sqyeaqjf2@macbook-pro-15-zbiru.local> <c3247d6d-5199-4c45-9825-772387effd7b@f16g2000yqm.googlegroups.com> <819ec9ea-fb64-4947-b8e3-08492d688c1a@d5g2000yqm.googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail
From: "Jaroslaw Zabiello" <usenet@onet.eu>
Newsgroups: pl.comp.lang.python
Subject: Re: python vs php - potrzebne argumenty
Date: Sun, 01 Nov 2009 23:28:37 -0000
Organization: http://onet.pl
Lines: 82
Message-ID: <op.u2qotzozeaqjf2@macbook-pro-15-zbiru.local>
References: <h83in7$rl3$1@inews.gazeta.pl> <b9dc7116-39db-474f-9282-8862b3f1cad2@d5g2000yqm.googlegroups.com> <a501db87-9ccf-4694-a8f8-330a67cdc839@15g2000yqy.googlegroups.com> <7aa62383-88c2-4138-89d6-594112504075@g27g2000yqn.googlegroups.com> <op.u2nhqrhyeaqjf2@macbook-pro-15-zbiru.local> <97ad13b9-95bf-4c61-8a1b-59c7c57e8499@s31g2000yqs.googlegroups.com> <op.u2oi93ceeaqjf2@macbook-pro-15-zbiru.local> <12b7fbaa-206c-4b39-8868-4e3b96eea704@37g2000yqm.googlegroups.com> <op.u2p83sqyeaqjf2@macbook-pro-15-zbiru.local> <c3247d6d-5199-4c45-9825-772387effd7b@f16g2000yqm.googlegroups.com> <819ec9ea-fb64-4947-b8e3-08492d688c1a@d5g2000yqm.googlegroups.com>
NNTP-Posting-Host: 78.16.107.141
Mime-Version: 1.0
X-Trace: news.onet.pl 1257118121 23035 78.16.107.141 (1 Nov 2009 23:28:41 GMT)
X-Complaints-To: niusy@onet.pl
NNTP-Posting-Date: Sun, 1 Nov 2009 23:28:41 +0000 (UTC)
To: pakalk <pakalk@gmail.com>
User-Agent: Opera Mail/10.01 (MacIntel)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit