🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Pytania początkującego cz. 1

#28284
From: merlin
Date: Sun, 13 Nov 2011 18:49
40 lines
2637 bytes
On 10 Lis, 17:48, hubert depesz lubaczewski <dep...@depesz.com> wrote:
> On 2011-11-10, Jordan Szubert <use...@joru.us.to> wrote:
>
> > d1=dict()
> > d1["a"]=dict()
> > di["a"]["b"]="123"
>
> hmm .. a nie ma jakiegoś shortcuta, gdybym na przykład uznał, że muszę
> koniecznie mieć 10 poziomów wgłąb?

Tak od kopa nie ma, ale zawsze możesz coś zrobić swojego:


>>> class ddict(dict):
...     def __getitem__(self, name):
...         if name not in self.__dict__:
...             self.__dict__[name] = ddict()
...         return self.__dict__[name]
...     def __setitem__(self, name, value):
...         self.__dict__[name] = value
...
>>> if __name__ == '__main__':
...     di = ddict()
...     di["a"]["b"]="123"
...     di["a"]["e"]["f"]="123f"
...     print di["a"]["b"]
...     print di["a"]["e"]["f"]
...
123
123f

metody __getitem__, __setitem__ to do dictow, list ... . Czyli jak
wkładasz coś do dicta/listy to wołana jest metoda __setitem__ itd

sa jeszcze metody __getattr__ / __getattribute__ , __setattr__ to do
atrybutów "depesz.attrybut" itp (opcjonalnie getattr(obiekt, attr,
default) i setattr(obiekt, attr, value).

--
Paweł Socha
Technical Details
Message-ID: <f98f29d2-e95d-43bb-9fc6-093498a5342c@n14g2000vbn.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin.stu.neva.ru!postnews.google.com!n14g2000vbn.googlegroups.com!not-for-mail
References: <vhsqo8-di8.ln1@depesz.com> <slrnjblpjq.7mn.dozzie@jarowit.net> <3q0to8-r2o.ln1@depesz.com> <j9gos2$ib6$1@node2.news.atman.pl> <4v7to8-ieq.ln1@depesz.com> <op.v4qm4hlbhilul8@asus7p.home> <grbto8-194.ln1@depesz.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin.stu.neva.ru!postnews.google.com!n14g2000vbn.googlegroups.com!not-for-mail
From: merlin <pawel.socha@gmail.com>
Newsgroups: pl.comp.lang.python
Subject: Re: Pytania początkującego cz. 1
Date: Sun, 13 Nov 2011 10:49:57 -0800 (PST)
Organization: http://groups.google.com
Lines: 41
Message-ID: <f98f29d2-e95d-43bb-9fc6-093498a5342c@n14g2000vbn.googlegroups.com>
References: <vhsqo8-di8.ln1@depesz.com> <slrnjblpjq.7mn.dozzie@jarowit.net> <3q0to8-r2o.ln1@depesz.com> <j9gos2$ib6$1@node2.news.atman.pl> <4v7to8-ieq.ln1@depesz.com> <op.v4qm4hlbhilul8@asus7p.home> <grbto8-194.ln1@depesz.com>
NNTP-Posting-Host: 87.206.213.111
Mime-Version: 1.0
X-Trace: posting.google.com 1321210317 22893 127.0.0.1 (13 Nov 2011 18:51:57 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Sun, 13 Nov 2011 18:51:57 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: n14g2000vbn.googlegroups.com; posting-host=87.206.213.111; posting-account=HoFbbgoAAADk9PiSSyuCtJ0a1diNx9XV
User-Agent: G2/1.0
X-Google-Web-Client: true
X-Google-Header-Order: HNKUARELSC
X-HTTP-UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2,gzip(gfe)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit