[python] Metody korenoveho objektu

Ondrej Nekola python na py.cz
Úterý Duben 1 17:08:13 CEST 2003


> > Imho neni duvod, proc by nemohl mit tyto metody kazdy objekt, prestoze
> > cast z nich je neuzije.
>
> Nejsem Arafat, ale stejne mne to prijde proti zasadam OOP.

Nevim proc, objekt dostane zpravu a umi na ni reagovat. Halt kdyz ji muze 
dostat kazdy objekt, tak ji mohou dostavat i objekty, u kterych to neni zas 
tak fundamentalni. Treba u 99% objektu jsem nepouzival __neco__, ale porad 
tam je.

> > > def inst_list (cls) :
> > >     return filter(lambda x: isinstance(x, cls), gc.get_referrers(cls))
> >
> > Tudy, obavam se, cesta nevede. Mozna reseni, ktera me napadaji
> > 1) zmenit primo definici objectu, zde nevim, zda k tomu nebudu potrebovat
> > hrabat se v C.
> > 2) pri startu programu rozsirit protkol objectu. Pak by, predpokladam,
> > mely vsechny loadovane tridy mit prislusne rozsireny interface.
>
> Urcite by bylo potreba vlezt do zdrojaku pythonu a upravit
> object a mozna type. Pokud byste ovsem netrval na syntaxi
> obj.hmo1.hmo2.hmo3.meth() a spokojil se s hmo3(hmo2(hmo1(obj.meth))),
> tak by to snad slo i bez toho. Otazkou je efektivita toho celeho.

Efektivita neni (podle par nastrelu, ktere jsem zkousel) zas tak fatalni, 
samozrejme je to jisty overhead. Pripadne muzu kritickou cast prepsat...
(ale protoze 80% casti kritickych nebude, tak to imho celkem slusne zefektivni 
praci)
-- 
S pozdravem
	Ondra Nekola
	ondra na matfyz.cz
	http://ondra.matfyz.cz
	ICQ# 160692888


Další informace o konferenci Python