Article View: pl.comp.lang.python
Article #27241Re: pętla i atrybuty klasy
From: Jan Kaliszewski
Date: Thu, 21 Jan 2010 02:18
Date: Thu, 21 Jan 2010 02:18
51 lines
2390 bytes
2390 bytes
On Wed, 20 Jan 2010 12:51:51 +0100, Ryszard G <wg@spam.pl> wrote:
> Witam.
> Mam klasę w której niektóre atrybuty są
> inną klasą, której niektóre atrybuty itd.
> jak wylistować wszyskie nie tworząc takiego potwora?
>
> for i in g.kraj.__dict__:
> print i
> if getattr(g.kraj, i):
> for j in getattr(g.kraj, i):
> print j.__dict__ .........
import types
class A:
"Przykladowa klasa z zagnieżdżonymi klasami/typami..."
a = 6
class B(object):
a = 3
class C:
nt = types.NoneType
st = str
s = "tralalala"
bt = bool
class Z(dict):
f = -2.
it = int
i = 3
def _przejdz_rekurencyjnie(klasa, juz_odwiedzone):
if id(klasa) in juz_odwiedzone:
return # (mogą być cykliczne referencje...)
juz_odwiedzone.add(id(klasa))
for nazwa, obiekt in klasa.__dict__.iteritems():
print nazwa # lub cokolwiek innego z nazwą lub obiektem...
if isinstance(obiekt, (type, types.ClassType)):
# typ (klasa w nowym stylu) lub klasa w starym stylu
_przejdz_rekurencyjnie(obiekt, juz_odwiedzone)
def przejdz_po_atrybutach(klasa):
_przejdz_rekurencyjnie(klasa, juz_odwiedzone=set())
przejdz_po_atrybutach(A)
Pozdr.
*j
--
Jan Kaliszewski (zuo)
Technical Details
Message-ID:
<op.u6u11b0rfvx12t@jerzozwiesz.home.aster.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.nask.pl!news.nask.org.pl!plix.pl!newsfeed1.plix.pl!nntp.aster.pl!newsread.aster.pl!newsread1.aster.pl!not-for-mailReferences:
<hj6rdn$eld$1@nemesis.news.neostrada.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!news.nask.pl!news.nask.org.pl!plix.pl!newsfeed1.plix.pl!nntp.aster.pl!newsread.aster.pl!newsread1.aster.pl!not-for-mail From: "Jan Kaliszewski" <zuo@chopin.edu.pl> Newsgroups: pl.comp.lang.python Subject: Re: pętla i atrybuty klasy Date: Thu, 21 Jan 2010 03:18:37 +0100 Organization: Aster Sp. z o.o. Lines: 51 Message-ID: <op.u6u11b0rfvx12t@jerzozwiesz.home.aster.pl> References: <hj6rdn$eld$1@nemesis.news.neostrada.pl> NNTP-Posting-Host: 62.121.72.3 Mime-Version: 1.0 X-Trace: newsread.aster.pl 1264040296 12453 212.76.33.132 (21 Jan 2010 02:18:16 GMT) X-Complaints-To: abuse@aster.pl NNTP-Posting-Date: Thu, 21 Jan 2010 02:18:37 +0000 (UTC) User-Agent: Opera Mail/9.64 (Linux) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit