Article View: pl.comp.lang.python
Article #27130Re: Metaklasy w Pythonie
From: Jan Kaliszewski
Date: Mon, 04 Jan 2010 03:04
Date: Mon, 04 Jan 2010 03:04
26 lines
1856 bytes
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-mailReferences:
<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