[python] dokumentace k novejsim rysum jazyka

David Rohleder davro na ics.muni.cz
Pondělí Březen 8 12:02:40 CET 2010


Tak to je to ještě rafinovanější, než jsem si myslel.

Tomáš Drenčák píše v Po 08. 03. 2010 v 12:00 +0100:
> no hej...aj tak sa to da, len tie xml metody neexistuju lokalne, ich
> nazov sa odvodi od nazvu volanej funkcie
> 
> v zdrojakoch ServerProxy je tato metoda:
> 
>     def __getattr__(self, name):
>         # magic method dispatcher
>         return _Method(self.__request, name)
> 
> ono to vrati objekt _Method, ktory obsahuje nazov volanej metody (name
> parameter) a kedze za nazvom parametra su (), tak sa zavola metoda
> __call__ na objekte _Method
> 
> proxy = ServerProxy(...)
> proxy.xxx # toto je objekt _Method
> proxy.xxx() # toto je volanie _Method.__call__(...)
> 
> 
> 
> 
> V Pondelok, 8. marec 2010 o 11:51 +0100, David Rohleder napísal(a): 
> > Fakt, že jo, měl jsem to skoro dobře, funguje to třeba i takto:
> > 
> > 
> > class Test:
> >     pass
> > 
> > def fce():
> >     print "Test"
> > 
> > a=Test()
> > a.__dict__['test'] = fce
> > a.test()
> > 
> > Tomáš Drenčák píše v Po 08. 03. 2010 v 11:48 +0100:
> > > nevidel som to, ale predpokladam ze pouzivaju __getattr__ metodu
> > > http://docs.python.org/reference/datamodel.html#object.__getattr__
> > > 
> > > V Pondelok, 8. marec 2010 o 11:43 +0100, David Rohleder napísal(a): 
> > > > Jirka Vejrazka píše v Po 08. 03. 2010 v 10:05 +0100:
> > > > > > Který nový rys pythonu od verze 2.0 vám přijde zajímavý, případně
> > > > > > užitečný? (iterátory, generátory, dekorátory, atd.)
> > > > > 
> > > > >  Vsechny zminene, k tomu jeste mnoziny ( set() ) a par internich veci.
> > > > > Ale mne drzi u Pythonu dve zakladni veci:
> > > > >  - vyborna citelnost ciziho kodu diky kontroverznimu odsazovani
> > > > >  - obrovsky rozsah externich modulu a funkci, ktere jsou dostupne. Pro
> > > > > mne od nizkourovnovych veci na siti (scapy, impacket, dpkt, dnet) pres
> > > > > kompletni sitove frameworky (twisted) az po webove frameworky (Django
> > > > > apod.)
> > > > > 
> > > > >   Zminuju to jenom proto, ze ve svetle techto dvou velkych vyhod me
> > > > > jednotlive "nelogicnosti" jazyka nechavaji chadnym. Nelibi se mi treba
> > > > >  ''.join(neco), ale jsem ochotny si na to zvyknout, beru to jako dan
> > > > > za pohodli v ostatnich vecech.
> > > > 
> > > > Mne fascinuje dynamické vytváření funkcí, akorát teda nevím, jak to
> > > > dělají, příklad u XML-RPC. Na serveru jsou definované přes XML-RPC
> > > > nějaké služby, tj. funkce a najednou mám ty funkce i ve svém vlastním
> > > > programu, aniž bych je musel nějak definovat:
> > > > 
> > > > (funkce listblockedIP a blockIP jsou metody definované na serveru a
> > > > ServerProxy opravdu nemá nadefinované metody listblockedIP a další)
> > > > 
> > > > ====
> > > > import xmlrpclib, sys
> > > > 
> > > > url = "http://localhost:8765/"
> > > > 
> > > > s = xmlrpclib.ServerProxy(url)
> > > > 
> > > > blkdIP = s.listblockedIP()
> > > > 
> > > > print blkdIP
> > > > 
> > > > print s.blockIP( 126, 6, 4, 5) 
> > > > ====
> > > > 
> > > > Říkal jsem si, že je to udělané pomocí slovníku, třeba takto:
> > > > 
> > > > class Test:
> > > >     pass
> > > > 
> > > > def fce():
> > > >     print "Test"
> > > > 
> > > > a=Test()
> > > > a['funkce'] = fce
> > > > a.funkce()
> > > > 
> > > > ale takto to nějak nefunguje.
> > > > 
> > > > 
> > > > 
> > > > D.
> > > > 
> > > > 
> > > > 
> > > > 
> > > > _______________________________________________
> > > > Python mailing list
> > > > Python na py.cz
> > > > http://www.py.cz/mailman/listinfo/python
> > > 
> > > 
> > > _______________________________________________
> > > Python mailing list
> > > Python na py.cz
> > > http://www.py.cz/mailman/listinfo/python
> > 
> > 
> > _______________________________________________
> > Python mailing list
> > Python na py.cz
> > http://www.py.cz/mailman/listinfo/python
> 
> 
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python




Další informace o konferenci Python