03. 03. 2011. | #1 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
|
python prosedjivanje parametara
Imam sledecu situaciju:
Kôd:
self.connect(storageDirButton, QtCore.SIGNAL('clicked()'), self.showDirectoryDialog) Ukoliko uradim Kôd:
self.connect(storageDirButton, QtCore.SIGNAL('clicked()'), self.showDirectoryDialog(param)) |
03. 03. 2011. | #2 |
član
Certified
Datum učlanjenja: 03.10.2006
Poruke: 96
Hvala: 27
44 "Hvala" u 26 poruka
|
Pa sad napamet mada mozda nije najelegantnije resenje, mozes da uradis onu foru iz prethodne teme jablanovu sa funkcijom koja vraca funkciju i to ce zbog closure-a uvek da radi:
Kôd:
def DirectoryDialogFactory(param): def showDirectoryDialog(): #use param somewhere return showDirectoryDialog #... self.connect(storageDirButton, QtCore.SIGNAL('clicked()'), self.DirectoryDialogFactory(param)) |
"Hvala" djipko za poruku: |
03. 03. 2011. | #3 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
|
Kompletna klasa je: https://github.com/cvele/uTorrent-Au...nfiguration.py
|
03. 03. 2011. | #4 |
član
Certified
Datum učlanjenja: 03.10.2006
Poruke: 96
Hvala: 27
44 "Hvala" u 26 poruka
|
Kolko vidim u kodu funkciji kao param uvek prosledjujes self.storageDirEdit koji je clan klase tako da ne vidim sto ga jednostavno ne bi uvek koristio u funckiji umesto sto ga prosledjujes kao parametar. Ako postoji neki razlog dalje u kodu onda ok.
Samo jos par stilskih saveta koji se odnose na Python tj stil kodiranja: Kôd:
while i<s: if self.l[i] is not None and str(self.l[i].text()) is not '': options['Labels'][str(self.l[i].text())] = str(self.e[i].text()) i += 1 Kôd:
for i, el in self.l.eunmerate(): if el and str(el.text()): options['Labels'][str(el.text())] = str(self.e[i].text()) Dok konstrukti tipa: Kôd:
if self.useImdbCheckbox.isChecked(): options['Global']['imdb'] = '1' else: options['Global']['imdb'] = '0' Kôd:
options['Global']['imdb'] = self.useImdbCheckbox.isChecked() and '1' or '0' Ovo nije pokusaj cepidlacenja nego proizilazi iz Zen of Python dela: "There should be one—and preferably only one—obvious way to do it.". Naravno da tvoje radi savrseno, ali stil je bitna stvar u Python jer je jezik koji dozvoljava svojim konstruktima da stil bude manje vise unificiran sto doprinosi da maltene svako moze da cita svaciji kod. Nikako zanemarljiva osobina. Procitaj isto i (ako dosad nisi): http://python.net/~goodger/projects/...c/handout.html |
"Hvala" djipko za poruku: |
03. 03. 2011. | #5 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
|
Slobodno cepidlaci, tu app pisem da bih ucio jer mi je ovo jedan od prvih kontakata sa pythonom.
Inace ne prosledjuje se uvek storageDirEdit, u metodu createLabelStorageInput se prave nova input polja tako da tu prosledjujem druge varijable. thanks za link |
|
|