[python] Dekorátor

Róbert Čerňanský hslists na zoznam.sk
Úterý Únor 22 21:34:43 CET 2011


On Mon, 21 Feb 2011 14:00:26 -0800 (PST)
Radek <radek.hnilica na gmail.com> wrote:

> Co mě opravdu dostalo, a to jsem měl chuť projít stropem, byla práce
> s časem.  Potřeboval jsem jednoduchou věc, vzít časovou/datumovou
> informaci od uživatele a udělat z ní časový objekt.  Ke své hrůze
> jsem zjistil, že to tak nějak nejde.
[...]
> že to umí metoda strptime a je to popsáno v dokumentaci.  Opětovně
> po několikáté jsem velmi pečlivě četl tu stránku v dokumentaci a
> nechápal, protože strptime je na tohle absolutně nepoužitelná.

Ono, strptime naozaj konvertuje reťazec do datetime:

 >>> datetime.strptime("22. 2. 2011", "%d. %m. %Y")
 datetime.datetime(2011, 2, 22, 0, 0)

Ale možno si potreboval niečo sofistikovanejšie, čo odhadne formát
automaticky a pod.

> I chtěl bych třeba, k danému objaktu, znát všechny metody a
> vlastnosti co má.  A neumím nikde najít takový přehled.  Takový
> přehled jako má například dokumentace k Ruby.  Nakliknout si
> Modul/Objekt a dostanu metody.  Nakliknu metodu a mám podrobný popis
> k čemu že vlastně slouží, jak se jí dávají parametry a ukázkou
> několika použití.

Pythonovský shell IDLE vie po stlačení Ctrl+Medzerník za bodkou
zobraziť zoznam členov daného objektu.  Taktiež môžeš napísať
help(<objekt>) a dostaneš výpis jeho členov aj so stručnými popismi.
Prípadne help(<funkcia>) zobrazí jej, v drvivej väčšine bohužiaľ
stručný, popis.  Klikať sa dá v browseri keď pustíš príkaz „pydoc
-g“, ale sú to tie isté stručné popisy, čo pre help(). :-(  Tiež by
som privítal aby API dokumentácia bola podrobnejšia.

Ja rád používam shell PyCrust, ktorý je súčasťou wxPython.  Okrem
dopĺňania (ponuky členov objektu) a tooltipov s helpom umožňuje
zobraziť aj zdroják k objektu ak je v Pythone.

Viac ma ale trápi to, že operácie, ktoré sa dajú s daným typom objektu
robiť treba hľadať na niekoľkých miestach.  Hlavne je nevýhoda, že
Python má kopec „voľne pohodených“ built-in funkcií a keď chcem vedieť
operácie napr. s listom, tak okrem jeho metód sa ešte musím prehrabať
množstvom built-in funkcií, ktoré zďaleka nie sú všetky o liste.  Plus
treba pozrieť modul itertools.

> Něco jak seznam.join(',').  Tohle je naštěstí tak profláknuté, že už
> jsem si zapamatoval že v Pythonu je join metoda toho ',' a ne toho
> pole.

Tak nie som jedný, komu sa zdá, že to má Python opačne. :-)

Robo


-- 
Robert Cernansky
E-mail: hslists na zoznam.sk
Jabber: hs na jabber.sk


Další informace o konferenci Python