🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: pętla i atrybuty klasy

#27241
From: Jan Kaliszewski
Date: Thu, 21 Jan 2010 02:18
51 lines
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-mail
References: <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