[python] Tipy na návrh třídy

Jan Bednařík jan.bednarik na gmail.com
Čtvrtek Červenec 31 22:51:14 CEST 2008


A proč se ty metody nepojmenuješ stejně jako klíčová slova na která mají
reagovat? Můžeš je pak jednoduše volat pomocí funkce getattr(), takto:

class A:
    def POKUS(self, arg):
        return arg

a = A()
key = 'POKUS'
arg = "test"

print getattr(a, key)(arg)

Pokud by šlo o to, aby pojmenování těch metod nebylo v rozporu s nějakými
pravidly pro psaní syntaxe, případně aby nekazilo logiku pojmenování metod,
vyřešil bych to zděděnou třídou obsahující "škaredě" pojmenované metody
podle těch klíčových slov, které budou pouze volat ty pěkně pojmenované
zděděné metody (a předávat jim parametry).

Honza



2008/7/31 Martin StiborskĂ˝ <martin.stiborsky na gmail.com>

> Zdravím, opět bych vás rád poprosil o vaše rady a zkušenosti.
>
> Jde o to, že bych rád elegantně vyřešil jednu část mého programu. Píšu
> si jabber bota, který bude bydlet na mém routeru a hlídat některé
> věci, torrenty, datové přenosy, připojené uživatele, pro srandu jsem
> ho naučil i típnout aktuální dění kolem routeru z připojené kamerky,
> prostě taková hračka ..
>
> Problém je, že příkazů na které bot reaguje se už nahromadila celkem
> hromada. Ve slovníku si udržuji jako klíč slovo, nebo slova na které
> bot zareaguje a jako hodnota je odkaz na příslušnou  metodu. Pokaždé
> když chci novou funkci bota, musím napsat metodu a přidat ji do
> slovníku + text na který bot reaguje. Toto bych chtěl automatizovat.
> Jenže hned první věc je, že nevím kam nacpat string který vyvolá
> funkci, zkusil jsem do šoupnout do __doc__ metody, při inicializaci
> třídy se projde jmenný prostor, vypreparuje se všechno co je metoda
> přes ismethod() z modulu inspect, koukne se na __doc__ metody a
> vytvoří slovník naplněný daty. To by snad i šlo, ale nelíbí se mi to
> ..
>
> Za vaše rady a tipy bych byl velmi vděčný ...
>
> --
> S pozdravem
> Martin StiborskĂ˝
>
> Jabber: stibi na njs.netlab.cz
> ICQ: 224-065-849
>
------------- daląí část ---------------
HTML příloha byla odstraněna...
URL: http://www.py.cz/pipermail/python/attachments/20080731/b9ad610e/attachment.htm 


Daląí informace o konferenci Python