🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Metaklasy w Pythonie

#27130
From: Jan Kaliszewski
Date: Mon, 04 Jan 2010 03:04
26 lines
1856 bytes
2010-01-03 o 23:40 pr <cricogik@gmail.com> napisał:

> Czy da się tak zrobić aby "metaklasa była lazy", to znaczy, aby
> wywołanie metody __new__ w MyMeta nastąpiło w wyniku świadomego
> odwołania do klasy B (patrz kod niżej), czyli, np kiedy zrobię tak:
> print B.myattr
> print B().myattr
> a nie w chwili gdy interpreter napotka już tylko samą definicję klasy
> (czyli za każdym razem, niezależnie czy jej używam):
> class B(A): pass
> ?

Tak wprost się nie da.

Ale możesz w ramach lub niezależnie od Twojej metaklasy utworzyć
taki mechanizm, że z chwilą stworzenia danej klasy tak naprawdę
utworzona zostanie jedynie "pusta" klasa-wrapper, która będzie się
zachowywać tak, że dopiero z chwilą pierwszego pobrania
jakiegokolwiek jej atrybutu będzie ona tworzyć właściwą klasę.
(Jak będę miał chwilę, to naszkicuję, jak to mogłoby wyglądać).

Pytanie tylko, w czym Ci przeszkadza utworzona a niewykorzystana
klasa?

pozdr.
*j
Technical Details
Message-ID: <op.u5zmsztdfvx12t@jerzozwiesz.home.aster.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.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: <acd8187e-60ea-4eda-9eb6-52f5d3754d2b@a21g2000yqc.googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.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: Metaklasy w Pythonie
Date: Mon, 04 Jan 2010 04:04:01 +0100
Organization: Aster Sp. z o.o.
Lines: 26
Message-ID: <op.u5zmsztdfvx12t@jerzozwiesz.home.aster.pl>
References: <acd8187e-60ea-4eda-9eb6-52f5d3754d2b@a21g2000yqc.googlegroups.com>
NNTP-Posting-Host: 62.121.72.3
Mime-Version: 1.0
X-Trace: newsread.aster.pl 1262574397 14449 212.76.33.132 (4 Jan 2010 03:06:37 GMT)
X-Complaints-To: abuse@aster.pl
NNTP-Posting-Date: Mon, 4 Jan 2010 04:57:47 +0000 (UTC)
User-Agent: Opera Mail/9.64 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit