On 21 ún, 15:01, Hynek Fabian <hynek.fab...@firma.seznam.cz> wrote: > Radek (Wednesday 16 of February 2011 15:23:07):> nejdřív bych se uvedl, jsem > takový opakovaný začátečník, k Pythonu > > jsem naposled přičichl možná před osmi lety a nic moc. Teď, asi tři > > měsíce zpátky jsem se k němu vrátil, protože si hraju s GAE/P. Přes > > všechny problémy se zkouším prokousávat, ikdyž python bolí, > > Něco děláš špatně. Kde to bolí?
To je na takové to domácí popovídání. Poslední roky jsem psal v Bashi a něco v Ruby. Z objektových systémů beru jako laťku se kterou srovnávám právě to Ruby. Když jsem začal hledat literaturu a zdroje ke studiu, řekl jsem si že když je spousta textů stylu "Java pro céčkaře", "Python pro fyziky". Že bych se porozhlédl jestli není něco jako Python pro Rubisty. Bohužel nenašel. Tak jediným zdrojem je to co po různu najdu. Snažím se postupně jednotlivé problémy řešit ale lámání je na dlouho. Asi bych si měl psát všechny nejasnosti bokem abych je měl po ruce, ale takto se spoléhám jen na svou děravou hlavu. 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. Na IRCu se mi podařilo odchytit nějakého programátora, a má hrůza se začala stupňovat jak jsem zjišťoval ža ani nechápe co chcu. Obyč funkci, nejlépe metodu časového objektu, které nacpu řetězec od uživatele jako string a dostanu objekt. Neustále říkal že přece nic problém, ž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á. Nakonec jsem objevil na netu knihovnu která to umí. Ale strávil jsem dost času zjišťováním že čistý python a dodané knihovny jsou v tomhle ohledu přinejmenším neúplné. A to je jen ukázka jednoho z mnoha případů kdy mi dlouhé hodiny, případně celé dny trvá najít řešení. Potřeboval bych nějakou rozumnou dokumentaci, a nevím kde ji vzít. Většina toho na co se lidi odkazují a co používají se mi zdá tak podivně strohé Viz Pythoní dokumentace k datetime. Často když něco píšu, tak mám představu co vlastně dělám, jen nevím jak se to píše v Pythonu. 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í. Další "drobnost" na kterou jsem narazil je join. Prostě potřebujete z seznamu který máte, nebo který držíte "uprostřed výpočtu na tečce" udělat řetezec. 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. > > Jen tím že chci aby měl dekorátor parametry, se tak radikálně změní > > kód dekorátoru. > > Potřeboval bych nějak po lopatě vědět, co se uvnitř děje, protože > > cítím že ty dekorátory budu určitě používat ještě mnohem divočeji. > > Vtip je v tom že se ve skutečnosti kód nijak nemění. Intuitivní představa že > parametry v závorkách by měly být předány dekorátoru je jen optický klam. > Pokud mám dekorátor jménem "spam" jj teď už to vim, začal jsem si dělat obrázek o tom jak to funguje a kdy se co vyhodnocuje a jak to dopadne. > Osobně považuji použití objektů k dekoraci za nešťastné. Metoda "uzávěra v > uzávěře" sice vypadá zezačátku děsivě, ale je aspoň přímočará a dá se pochopit > co se děje uvnitř. Objekty jen nahradí jednu složitost jinou (kolik lidí chápe > nuance metod __call__, __new__ a __init__?). No jde o to, že jsem neviděl dost příkladů abych si udělal obrázek. Jedno z prvních vysvělení dekorátorů které jsem viděl používalo třídu s odůvodněním že je to mnohem snažší na pochopení, tak jsem se toho držel. Můžu zkusit svůj případ přepsat s použítí třídy na použítí funkce. Ale nebude to možná mít ten správný efekt, protože jsem ostrý okód tak refaktorizoval, že z něj už moc nezbylo. (Jak jsem zmiňoval, původně tam byly další dvě metody které se volaly). Další věc je, že mám někde v hlavě špendílček zaražený k dekorátoru že bych mohl využít dědičnost při tvorbě různých druhů authorizačních dekorátorů. Jako že základní princip a pak BasicHTTP, Session, ..... poděděné z něj. _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python