Takže docstring musi byt vždy v trojitych uvodzovkach? V jednych byť nemôže? Ďakujem za odpoveď
Dňa 13. január 2013 8:50, azurIt <azu...@pobox.sk> napísal(-a): > Tie vrchne komentare mas len s jednymi uvodzovkami (aspon mne sa to tak > zobrazilo).Tymto si, defakto, vytvoril string a nie komentar :) > > azur > > > ______________________________________________________________ > > Od: "Roman Beno" <romanbeno...@gmail.com> > > Komu: Konference PyCZ <python@py.cz> > > Dátum: 13.01.2013 08:09 > > Predmet: Re: [python]otázka ohladom mojho ?týlu písania v OOP > > > >To iné odsadenie vzniklo iba"zdeformovaním" textu s pri kopírke z editoru > >(zalomenie riadkov, odsadenia atd) > > > > > >Dňa 12. január 2013 22:47, David Rohleder <da...@ics.muni.cz> > napísal(-a): > > > >> Zdá se mně to, nebo používáš v každé úrovni jiné odsazení? > >> > >> > >> Roman Beno píše v So 12. 01. 2013 v 18:08 +0100: > >> > > >> > Dobrý deň, > >> > > >> > chcel by som sa spýtať na váš názor ohľadne môjho štýlu písania > >> > programov v OOP. > >> > Rád prijmem akukolvek kritiku, mojim cielom je sa v tomto ohľade > >> > zlepšit a v tejto oblasti som si nie som príliš istý. > >> > > >> > Tu sú ukážky mojich kódov: > >> > > >> > # -*- coding: utf-8 -*- > >> > #################Definícia triedy####################### > >> > class Fibonacci: > >> > "Fibonacciho trieda" > >> > def __init__(self,a=0,b=1,pocet_cisiel=10,default=0): > >> > "Vyrobíme stavebný materiál pre fibonaccciho postupnosť." > >> > self.a=a > >> > self.b=b > >> > self.pocet_cisiel=pocet_cisiel > >> > self.default=default > >> > def proces(self): > >> > print(self.a,self.b,end=" ") > >> > while True: > >> > self.a=(self.a+self.b) > >> > self.default+=1 > >> > if self.default>=self.pocet_cisiel: > >> > print("\n") > >> > break > >> > print(self.a,end=" ") > >> > # postupnost bude a,b,a,b,a,b... tento blok je pre všetky > >> > a > >> > self.b=(self.a+self.b) > >> > self.default+=1 > >> > if self.default>=self.pocet_cisiel: > >> > print("\n") > >> > break > >> > print(self.b,end=" ") > >> > # a tento pre všetky b > >> > #################Hlavný program########################## > >> > MojaInstancia=Fibonacci(pocet_cisiel=20) > >> > MojaInstancia.proces() > >> > > >> > > >> > ************************************************************************************************************ > >> > Tu je další: > >> > > >> > # -*- coding: utf-8 -*- > >> > # program Záznamník adries > >> > # tréning Tkinter + OOP > >> > # autor JA, dnes > >> > # ver. 1.0 > >> > # * opravená chyba pri vytvárani poľa pre zadávaní adresy, použitá > >> > neexistujúca farba okna > >> > # * opravená chyba pri vytváraní tlačítka ukončujúceho okno zadávania, > >> > použitý neexistujúci názov prvku > >> > # * zmenené umiestnenie a veľkosť tlačítka pre zavretie okna pri > >> > pridávaní adries > >> > # ver. 1.1 > >> > # * opravená chyba pri potvrdení voľby mena pri pridávaní mena, > >> > použitá neexistujúca premenná > >> > # * opravená chyba pri potvrdení voľby mena pri pridávaní adresy, > >> > použitá neexistujúca premenná > >> > # ver. 1.2 > >> > # * polia pre zadávaní mena aj adresy sa po zadaní oboch údajov teraz > >> > vymažú (ich hodnota)m > >> > # uživatel ich teraz nemusí zadávať sám > >> > # * opravená chyba pri načítaní údajov zo zoznamu, použitá > >> > neexistujúca premenná > >> > # ver. 1.2.1 > >> > # * opravená chyba pri zobrazovaní načítaných údajov,použitá > >> > neexistujúca premenná > >> > # ver. 1.3 > >> > # * opravená chyba pri vytváraní tlačítka na zavretie okna načítania > >> > údajov, použitá neexistujúca > >> > # premenná > >> > # * opravená chyba pri zobrazovaní načítaných údajov (druhá chyba v > >> > tomto), použitá neexistujúca premenná > >> > # * zmenený text niektorých tlačítok v úvodnom menu > >> > # * v popisku okna sa teraz zobrazuje aj aktuálna verzia programu > >> > # ver. 1.3.1 > >> > # * pri načítaní údajov upravená oddelovacia čiara údajov > >> > # * zmenené rozmery tlačítka ukončujúceho okno načítania údajov > >> > # ver. 1.3.2 > >> > # * v okne ukladania súboru zmenená farba informačného textu na > >> > prehľadnejšiu > >> > # * opravená chyba pri ukladaní súborov, použitá neexistujúca premenná > >> > # ver. 1.4 > >> > # * opravená chyba pri ukladaní súborov, použitá ďalšia neexistujúca > >> > premenná > >> > # * zmenená farba riadku pre chybové hlásenia v okne ukladania dát na > >> > prirodzenú bledomodrú > >> > # * pridaná možnosť odstránenia položiek zo zoznamu > >> > > >> > > >> > from tkinter import * > >> > import sys > >> > import os > >> > > >> > class Zaznamnik: > >> > "Toto je trieda môjho záznamníku" > >> > > >> > def __init__(self): > >> > self.hlavneOkno=Tk() > >> > self.hlavneOkno.title("Záznamník, Ver. 1.4") > >> > self.adresy=[] > >> > self.zoznamMena=[] > >> > > >> > def program(self): > >> > "Táto časť programu bude mať za úlohu čisto len grafiku > >> > hlavného menu (nie logiku)." > >> > > >> > > >> > self.HOuvodnypopisokLabel=Label(self.hlavneOkno,bg="lightblue",text="Vitajte > >> v mojom záznamníku adries.\nDúfam, že sa vám bude páčiť.") > >> > self.HOuvodnypopisokLabel.grid(row=0,column=0,sticky=W+E+N+S) > >> > # uvodny popisok - label - ktorý nás privíta v programe > >> > > >> > > >> > self.HOtlacitkoZadavatAdresy=Button(self.hlavneOkno,bg="lightblue",activebackground="lightgreen",text="Pridať > >> adresy do záznamníka") > >> > self.HOtlacitkoZadavatAdresy.grid(row=1,column=0,sticky=W+E+N > >> > +S) > >> > # tlačítko, ktoré by malo umožniť zadávanie adries > >> > > >> > > >> > self.HOtlacitkoOdstranitAdresy=Button(self.hlavneOkno,bg="lightblue",activebackground="lightgreen",text="Odstrániť > >> adresu zo záznamníka") > >> > self.HOtlacitkoOdstranitAdresy.grid(row=2,column=0,sticky=W+E > >> > +N+S) > >> > # tlačítko, ktoré by malo umožniť odstránenie adries > >> > > >> > > >> > self.HOtlacitkoUlozit=Button(self.hlavneOkno,bg="lightblue",activebackground="lightgreen",text="Uložiť > >> do súboru") > >> > self.HOtlacitkoUlozit.grid(row=3,column=0,sticky=W+E+N+S) > >> > # tlačítko, ktoré by malo umožnit uloženie do súboru > >> > > >> > > >> > self.HOtlacitkoNacitat=Button(self.hlavneOkno,bg="lightblue",activebackground="lightgreen",text="Načítať > >> dáta zo zoznamu") > >> > self.HOtlacitkoNacitat.grid(row=4,column=0,sticky=W+E+N+S) > >> > # tlačítko, ktoré by malo umožniť načítanie dát zo súboru > >> > > >> > > >> > self.HOtlacitkoNapoveda=Button(self.hlavneOkno,bg="lightblue",activebackground="lightgreen",text="Zobrazenie > >> nápovedy") > >> > self.HOtlacitkoNapoveda.grid(row=5,column=0,sticky=W+E+N+S) > >> > # tlačítko, ktoré by malo zobraziť nápovedu > >> > > >> > > >> > self.HOtlacitkoUkoncit=Button(self.hlavneOkno,bg="lightblue",activebackground="lightgreen",text="Ukončiť > >> program",command=self.hlavneOkno.quit) > >> > self.HOtlacitkoUkoncit.grid(row=6,column=0,sticky=W+E+N+S) > >> > # tlačítko, ktoré by malo ukončiť program > >> > > >> > def zadavanie_adries(): > >> > "Táto časť bude zachytávať logiku programu. Kvoli velkému > >> > rozsahu rozdelenú na niekoľko častí. Konkrétne zadávanie adries." > >> > # prvá časť tejto funkcie > >> > # vzhľad podokna na zadávanie > >> > self.OknoZadavanie=Toplevel() > >> > self.OknoZadavanie.title("Zadávanie adries") > >> > > >> > self.OknoZadavanieLabel=Label(self.OknoZadavanie,bg="lightblue",text=" > >> > Aktuálna činnosť: Zadávanie adries \nPre potvrdenie > >> > údaju z okna stlačte ENTER.\n") > >> > > >> > self.OknoZadavanieLabel.grid(row=0,column=0,columnspan=4,sticky=W+E+N > >> > +S) > >> > # Vytvorenie podokna na zadávanie adries, nastavený > >> > titulok + úvodný Label > >> > self.VarPPCH=StringVar() > >> > > >> > > >> > self.OknoZadavanieLabelChybHlasky=Label(self.OknoZadavanie,bg="lightblue",textvariable=self.VarPPCH) > >> > > >> > > >> > self.OknoZadavanieLabelChybHlasky.grid(row=1,column=0,columnspan=4,sticky=W+E+N+S) > >> > # Vytvorená textová premenná pre prípadné chybové hlášky. > >> > Pre začiatok sa bude tváriť ako > >> > # neviditeľná súčasť okna > >> > > >> > self.RamecZadajMeno=Frame(self.OknoZadavanie,bd=3,bg="lightblue") > >> > > >> > self.RamecZadajMeno.grid(row=2,column=0,columnspan=4,sticky=W+E+N+S) > >> > self.VarPZM=StringVar() > >> > # Vytvorený rámec pre zadanie mena + popisok k nemu. > >> > Taktiež premenná pre políčko > >> > # pre vstup > >> > > >> > self.RamecPopisokPola=Label(self.RamecZadajMeno,text="Zadajte meno > >> > dotyčného:",bg="lightblue") > >> > self.RamecPopisokPola.grid(row=2,column=0,sticky=W+E+N+S) > >> > > >> > > >> > self.PolePreVstupMena=Entry(self.RamecZadajMeno,bg="lightyellow",textvariable=self.VarPZM,font="Arial > >> 8") > >> > > >> > self.PolePreVstupMena.grid(row=2,column=1,columnspan=3,sticky=W+E+N+S) > >> > # Vytvorený popisok pre pole pre vstup + políčko samotné > >> > > >> > self.RamecZadajAdresu=Frame(self.OknoZadavanie,bd=4,bg="lightblue") > >> > > >> > self.RamecZadajAdresu.grid(row=3,column=0,columnspan=4,sticky=W+E+N+S) > >> > > >> > > >> > self.LabelPreDruhePole=Label(self.RamecZadajAdresu,bg="lightblue",text="Zadajte > >> adresu dotyčného: ") > >> > self.LabelPreDruhePole.grid(row=3,column=0,sticky=W+E+N+S) > >> > self.VarPPA=StringVar() > >> > > >> > > >> > self.PolePreAdresu=Entry(self.RamecZadajAdresu,bg="lightyellow",textvariable=self.VarPPA,font="Arial > >> 8") > >> > self.PolePreAdresu.grid(row=3,column=1,columnspan=3) > >> > # Vytvorený rámec pre zadanie adresy, popis pre neho, > >> > premennú pre neho a taktiež pole > >> > # samé. > >> > > >> > > >> > self.ZadavacieTlacitkoUkoncit=Button(self.OknoZadavanie,bg="lightblue",activebackground="lightgreen",command=self.OknoZadavanie.destroy,text="Zavrieť > >> toto okno") > >> > > >> > > >> > self.ZadavacieTlacitkoUkoncit.grid(row=4,column=0,columnspan=4,sticky=W+E+N+S) > >> > self.OverovaciToken=0 > >> > # Vytvorené tlačítko pre zavretie tohto okna pre zadanie > >> > adresy. > >> > def enter(BoloStlacene): > >> > BoloStlacene.widget.configure(state=DISABLED) > >> > self.udajMeno=str(self.PolePreVstupMena.get()) > >> > self.OverovaciToken+=1 > >> > if self.OverovaciToken==2: > >> > self.PolePreVstupMena.configure(state=NORMAL) > >> > self.PolePreAdresu.configure(state=NORMAL) > >> > self.zoznamMena.append(self.udajMeno) > >> > self.VarPZM.set("") > >> > self.VarPPA.set("") > >> > > >> > self.adresy.append([self.udajMeno,self.udajAdresu]) > >> > self.OverovaciToken=0 > >> > # funkcia, čo sa má stať po zdarnom zadaní informácie do > >> > políčka Meno. Dané políčko > >> > # sa disabluje, údaj z neho sa uloží. + špecialita > >> > overovací token. Ak dosiahne hodnotu 2, > >> > # program zistí, že má spravit ďalšiu "obrátku" pri > >> > pridávaní do zoznamu > >> > def entri(StlaceneBolo): > >> > StlaceneBolo.widget.configure(state=DISABLED) > >> > self.udajAdresu=str(self.PolePreAdresu.get()) > >> > self.OverovaciToken+=1 > >> > if self.OverovaciToken==2: > >> > self.PolePreVstupMena.configure(state=NORMAL) > >> > self.PolePreAdresu.configure(state=NORMAL) > >> > self.zoznamMena.append(self.udajMeno) > >> > self.VarPZM.set("") > >> > self.VarPPA.set("") > >> > > >> > self.adresy.append([self.udajMeno,self.udajAdresu]) > >> > self.OverovaciToken=0 > >> > # táto funkcia zase slúži na definovanie činnosti políčka > >> > Adresy. Zapíše údaj > >> > # do zoznamu a disabluje políčko. Malo by to zabezpečiť > >> > zadávanie. > >> > self.PolePreVstupMena.bind("<Return>",enter) > >> > self.PolePreAdresu.bind("<Return>",entri) > >> > # čo sa má stať po stlačení Entrov v rôznych okienkach > >> > > >> > def nacitanie_dat(): > >> > "Táto funkcia by mala zabezpečiť zobrazenie, resp. > >> > načítanie dát zo zoznamu." > >> > self.OknoNacitanie=Toplevel() > >> > self.OknoNacitanie.title("Načítanie dát") > >> > # vytvorené vlastné okno pre načítanie dát, kde by sa > >> > teoreticky mali zobrazovať > >> > # dáta uložené v zozname adries > >> > > >> > > >> > self.oknoNacitanieZobrazenie=Label(self.OknoNacitanie,bg="lightblue",text="") > >> > self.oknoNacitanieZobrazenie.grid(row=0,column=0) > >> > self.premenna="""\tMená\t\tAdresy > >> > \n***************************************\n""" > >> > if len(self.adresy)==0: > >> > self.oknoNacitanieZobrazenie.configure(text="Zoznam je > >> > prázdny.") > >> > else: > >> > for p in self.adresy: > >> > self.coNacitaj="\t{0}\t\t{1}\n".format(p[0],p[1]) > >> > self.premenna+=self.coNacitaj > >> > > >> > self.oknoNacitanieZobrazenie.configure(text=self.premenna) > >> > # toto by malo zabezpečiť zdarné zobrazovanie položiek > >> > zoznamu > >> > > >> > > >> > > >> > self.tlacitkoUkoncitON=Button(self.OknoNacitanie,bg="lightblue",activebackground="lightgreen",text="Zavrieť > >> toto okno",command=self.OknoNacitanie.destroy) > >> > self.tlacitkoUkoncitON.grid(row=1,column=0,sticky=N+S+E+W) > >> > # toto tvorí tlačítko, ktoré by mohlo zavrieť okno > >> > > >> > def ulozenie_do_suboru(): > >> > "Toto má na starosti zdarné uloženie dát do súboru. Trošku > >> > nám pomôže predošlá funkcia, načítanie dát." > >> > self.OknoUlozenie=Toplevel() > >> > self.OknoUlozenie.title("Uloženie do súboru") > >> > > >> > self.OknoUlozenieLabelVyber=Label(self.OknoUlozenie,text="Vyberte meno > >> > súboru, do ktorého chcete uložiť dáta zo súboru.",bg="lightblue") > >> > > >> > self.OknoUlozenieLabelVyber.grid(row=0,column=0,columnspan=2,sticky=W > >> > +E+N+S) > >> > # vytvorené ukladacie okno, nastavený popisok pre neho + > >> > popisok pre políčko pre zadanie mena ukladacieho súboru > >> > self.OUPPV=StringVar() > >> > > >> > > self.OUPolePreVstup=Entry(self.OknoUlozenie,bg="lightyellow",font="Arial > >> 8",textvariable=self.OUPPV) > >> > > >> > self.OUPolePreVstup.grid(row=0,column=2,columnspan=2,sticky=W+E+N+S) > >> > # pole, kam môžeme zadávať samotný názov súboru > >> > > >> > > self.OUPosudzovaciaHlaska=Label(self.OknoUlozenie,bg="lightblue",text="") > >> > > >> > self.OUPosudzovaciaHlaska.grid(row=1,column=0,columnspan=4,sticky=W+E > >> > +N+S) > >> > # tu sa vypíš prípadná chybová hláška, v závislosti od > >> > toho, čo zadáme do zmieneného políčka > >> > def entricek(ppv): > >> > self.result=str(self.OUPolePreVstup.get()) > >> > if len(self.result)==0: > >> > self.OUPosudzovaciaHlaska.configure(text="Nezadali > >> > ste meno žiadneho súboru.") > >> > self.OUPPV.set("") > >> > return > >> > # ak ste nezadali nič, tak vypíše hlášku, znuluje > >> > hodnotu pola a zavrie funkciu > >> > if len(self.adresy)==0: > >> > self.OUPosudzovaciaHlaska.configure(text="Zoznam > >> > adries je prázdny.") > >> > self.OUPPV.set("") > >> > return > >> > # podobné ako v predchádzajúcom prípade, ibaže ak je > >> > zoznam adries prázdny > >> > self.subor=open(self.result,"wt") > >> > try: > >> > self.subor.write(self.premenna) > >> > except: > >> > self.OUPosudzovaciaHlaska.configure(text="Zatial > >> > ste nenačítali žiadne dáta. Urobte tak cez hlavné menu.") > >> > self.subor.close() > >> > self.OUPPV.set("") > >> > return > >> > # stale je možnost že uživatel nenačítal > >> > požadované dáta na vloženie > >> > self.OUPosudzovaciaHlaska.configure(text="Zatial ste > >> > nenačítali žiadne dáta. Urobte tak cez hlavné menu.") > >> > self.subor.close() > >> > self.OUPolePreVstup.configure(state=DISABLED) > >> > # toto sa stane v pripade že chyba nenastala, > >> > self.OknoUlozenie.bind("<Return>",entricek) > >> > > >> > > >> > self.OUTlacitkoZavri=Button(self.OknoUlozenie,bg="lightblue",activebackground="lightgreen",text="Zavrieť > >> toto okno",command=self.OknoUlozenie.destroy) > >> > > >> > self.OUTlacitkoZavri.grid(row=2,column=0,columnspan=4,sticky=W+E+N+S) > >> > # urobené tlačítko, ktoré zavrie okno > >> > > >> > def odstranenie_poloziek(): > >> > "Odstránenie jedného záznamu zo zoznamu adries a mien" > >> > self.OknoOdstranenie=Toplevel() > >> > self.OknoOdstranenie.title("Odstranenie poloziek") > >> > self.OOpripravenytext=[] > >> > # vytvorené okno odstránenia, nastavený popisok + > >> > náradíčko = prázdny zoznam > >> > for x in self.zoznamMena: > >> > self.OOpripravenytext.append(x) > >> > > >> > > >> > self.OOodstranenieLabel=Label(self.OknoOdstranenie,bg="lightblue",text="Vyberte > >> si položku zoznamu,ktorú\nchcete odstrániť:") > >> > self.OOodstranenieLabel.grid(row=0,column=0) > >> > # pripraví zoznam položiek pre neskoršie odstranovanie + > >> > vytvorenie labelu na odstranenie > >> > # položky > >> > self.OOPPO=StringVar() > >> > > >> > > >> > self.OOPolePreOdstranenie=Entry(self.OknoOdstranenie,bg="lightyellow",textvariable=self.OOPPO,font="Arial > >> 8") > >> > > >> > self.OOPolePreOdstranenie.grid(row=0,column=1,columnspan=2,sticky=W+E > >> > +S+N) > >> > > >> > > >> > self.OOLabelChybovaHlaska=Label(self.OknoOdstranenie,bg="lightblue",text="") > >> > > >> > self.OOLabelChybovaHlaska.grid(row=1,column=0,columnspan=3,sticky=W+E > >> > +S+N) > >> > # samotné políčko, kam možete zadat meno položky (meno > >> > konk.osoby, ktorú chcete odstrániť > >> > def stlacil_entri(gangnam): > >> > coBoloStlacenee=str(self.OOPolePreOdstranenie.get()) > >> > if coBoloStlacenee in self.zoznamMena: > >> > > >> > indexCoBoloStlacenee=self.zoznamMena.index(coBoloStlacenee) > >> > else: > >> > > >> > self.OOLabelChybovaHlaska.configure(text="Neexistujúce meno.") > >> > self.OOPPO.set("") > >> > del self.adresy[indexCoBoloStlacenee] > >> > del > >> > self.zoznamMena[self.zoznamMena.index(coBoloStlacenee)] > >> > self.OOPPO.set("") > >> > # zoberieme to z políčka pre vstup, ak je v zozname > >> > mien, odstrán z oboch zoznamov > >> > # ak nie, vyhod chybove hlasky. Samozrejmostou je > >> > nasledne premazanie policka > >> > self.OOPolePreOdstranenie.bind("<Return>",stlacil_entri) > >> > > >> > > >> > self.OOZavriOkno=Button(self.OknoOdstranenie,bg="lightblue",activebackground="lightgreen",text="Zavrieť > >> toto okno",command=self.OknoOdstranenie.destroy) > >> > self.OOZavriOkno.grid(row=2,column=0,columnspan=3,sticky=W > >> > +E+S+N) > >> > # zabezpečená akcia pre pole pre vstup po stlačení Enteru. > >> > # vytvorené tlačítko na zavretie okna > >> > > >> > > >> > self.HOtlacitkoNacitat.configure(command=nacitanie_dat) > >> > self.HOtlacitkoUlozit.configure(command=ulozenie_do_suboru) > >> > > >> > self.HOtlacitkoZadavatAdresy.configure(command=zadavanie_adries) > >> > > >> > self.HOtlacitkoOdstranitAdresy.configure(command=odstranenie_poloziek) > >> > > >> > self.hlavneOkno.mainloop() > >> > > >> > ######################################################### > >> > > >> > inst=Zaznamnik() > >> > inst.program() > >> > > >> > Ďakujem za akúkolvek odpoved > >> > > >> > > >> > _______________________________________________ > >> > 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 > >> > > > > > >---------- > > > >_______________________________________________ > >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 >
_______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python