Chyba bude skôr na mojej strane. Už som spomínal, že s OOP len začínam, takže v tých princípoch ešte nie som celkom doma.
2013/1/13 rajcze <raj...@gmail.com> > Asi jsem nepochopil zamer, s jakym je tahle konstrukce vymyslena.... Na co > je dobry vytvorit "ukazatel" na metodu jedne konkretni instance pri importu > modulu? A kdyz rikas "importovat metody z PrikazovehoRadka" tak tim myslis > co? Jakoze, bud mas tridu, tu si importuj, v programu vyrob instanci, a tu > pak pouzivej, nebo to holt napis jen jako knihovnu s metodou "proces". > Mozna to mas jako pozustatek z Javy, nebo co ja vim, ale v Pythonu neni > potreba kazdou kravinu "balit" do objektu, jen aby to bylo kchul > objektove.... Me proste prijde, ze zamer s jakym to pouzivas (coz tak jak > to mas je s prominutim hloupost), se uplne nekreje s tim, proc programovat > objektove. > Ale je mozne, yze jde jen o nepochopeni ejakeho vyssiho principu na me > strane. > > > On Sunday, January 13, 2013, Roman Beno wrote: > >> Ahoj, >> ten problém s if __name__ ... co si opisoval som vyriešil takto: >> >> if __name__=="__main__": >> instancia=PrikazovyRiadok() >> instancia.proces() >> >> elif __name__!="__main__": >> instancia=PrikazovyRiadok() >> proces=instancia.proces >> >> Neviem či je to dobré, ale osvedčilo, ked som chcel importovat metody z >> PrikazovehoRiadka, >> >> Roman >> >> >> >> >> Dňa 13. január 2013 10:45, rajcze <raj...@gmail.com> napísal(-a): >> >> Co se dodrzovani PEP8 tyka: Use pyling, Luke! < >> http://pypi.python.org/pypi/pylint> >> Na druhou stranu, je potreba si uvedomit, ze pylint je nacek, a prebrat >> si co ktera chybova hlaska znamena (samozrejme to jde nastavit tak, aby se >> urcity typ chyb nehlasil, atd.) >> >> _Vzdy_ prosim pouzivej new-style classes, tj. PrikazovyRiadok(object). >> Nema to zadne nevyhody, a prinasi to spoustu vyhod (ty sice zatim mozna >> neocenis, ale jednou se ti budou jiste hodit) < >> http://realmike.org/blog/2010/07/18/introduction-to-new-style-classes-in-python/ >> > >> >> Ad if __name__ == "__main__": z praktickeho hlediska je _temer vzdy_ >> nespravne mit vykonny kod mimo tenhle blok, a v tomhle pripade to plati >> obzvlast. Duvod je jednoduchy - predstav si, ze tam ten __main__ blok >> nemas, a rozhodnes se tenhle soubor importovat jako knihovnu (protoze z >> nejakeho duvodu chces pouzivat tridu PrikazovyRiadok. Pri importovani >> modulu pak Python "vykona" celou tu knihovnu, a pak ti zpristupni symboly. >> Tedy v tomhle pripade (pokud bys nemel volani te metody proces v __main__ >> bloku) by se ti pri importu spustila metoda proces a zacala poskytovat >> "prikazovy radek". Coz asi neni to co by clovek pri importu cekal. >> >> Joza >> >> >> 2013/1/13 Roman Beno <romanbeno...@gmail.com> >> >> Dobrý den, >> tento štýl by mohol vyhovovat? >> >> >> #! /usr/bin/python3 >> >> # -*- coding: utf-8 -*- >> >> from os import getcwd,system >> >> >> >> class PrikazovyRiadok: >> """Trieda pracujúca ako príkazový riadok.""" >> >> def proces(self): >> """"Metóda umožňujúca zadávanie príkazov cez os.system a >> os.getcwd""" >> while True: >> self.prikaz=str(input("Zadajte príkaz alebo 0 pre ukončenie: >> ")) >> # Zadaj lubovolný príkaz. Ten sa vo forme výstupu z input() >> # neskor stane argumentom os.system alebo os.getcwd >> if self.prikaz=="0": >> break >> # ak však napíšete 0, zoberie si program, že chcete skončit >> if self.prikaz.startswith("cd"): >> getcwd(self.prikaz) >> continue >> # mám dojem, že os.system() sa nevztahuje napríkaz cd. Preto >> dostal >> # priestor príkaz os.getcwd() v prípade, že sa self.prikaz >> začina >> # na cd >> system(self.prikaz) >> # ked sme ešte cyklus nezačali znova, alebo neskončili, spln >> # konečne ten príkaz >> >> >> >> ############################################################################## >> if __name__=="__main__": >> instancia=PrikazovyRiadok() >> instancia.proces() >> >> Nie som si istý, či je dobré dať vytvorenie instancie a volanie metódy do >> if__name__... >> >> Ďakujem za odpoveď >> >> >> Dňa 12. január 2013 21:51, Jan Bednařík <jan.bedna...@gmail.com>napísal(-a): >> >> Rád bych ti poradil konkrétněji, ale tím že nedodržuješ PEP8 a >> nestandardně mícháš různé způsoby zápisu kódu dohromady (CamelCase v >> zázvech proměnných apod.), je ten tvůj kód na první pohled nepřehledný, >> alespoň já to tak vnímám. A těžko se to luští. >> >> Nicméně rozhodně by ses měl vyvarovat importování hvězdiček (from tkinter >> import *). Měl bys mít přehled o tom co importuješ - měl bys konkrétně >> importovat jen třídy, funkce, atd., které používáš. >> >> Definování funkcí uvnitř metod je myslím taky na pováženou - měl by si >> spíše využít pomocné metody. Jak si sám napsal, rozkouskování pro >> zpřehlednění programu určitě neuškodí - přehlednost a srozumitelnost by >> měla být na prvním místě, protože až se k tomu kódu budeš někdy vracet, >> oceníš, když se v něm snadno zorientuješ. >> >> Ono to rozkouskování na metody a funkce je hlavně otázka citu a >> zkušeností, které nabereš časem. Případně se zkus přiučit čtením zdrojových >> kódů nějakých větších open-source projektů. >> >> >> 2013/1/12 Roman Beno < >> >> >> > > -- > Rules of Optimization: > Rule 1: Don't do it. > Rule 2 (for experts only): Don't do it yet. > > _______________________________________________ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python >
_______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python