Problem jsem uspesne vyresil a binarku je spustitelna snad jiz nezavisle
na nainstalovanem softwaru. Pro celistvost posilam reseni problemu:
Jiz jsem nevedel jak dal a tak jsem nainstaloval Microsoft Visual Studio
2008 (VS) v plnotucne verzi jako 30 denni trial. Spustil svou pythoni
binarku,
Ahoj,
je možné, aby nevznikl objekt, který zrovna vytvářím? Příklad - mám
třídu typu IP adresa, v konstruktoru předávám řetězec IPadresy. Chtěl
bych, aby v případě, že IP adresa není validní, objekt vůbec nevznikl.
Tj. aby konstruktor vrátil None:
ipaddr = IP(192.1023.neco.1)
ipaddr
None
Skor by som to urobil cez vynimku - konstruktor v pripade zlej IPcky vyvola
nejaku vynimku a objekt vytvoris takto:
try:
ipaddr = IP(192.1023.neco.1)
except tvoja_vynimka:
print zadavas blby vstup
Ak 'ipaddr' potrebujes mat na None aj dalej v kode, tak este do except prihod:
ipaddr = None
Ahoj
Že by konstruktor udělal něco tak, aby žádný objekt nevznikl, nejde
(to není bug). Možností je několik:
- vyhazovat výjimku (jak již bylo zmíněno)
- nevolat konstruktor (tedy nevytvářet objekt), ale volat funkci,
která sama vytvoří objekt, nebo vrátí None - podle mě nejlepší řešení
-
Ahoj,
velmi standardni reseni je vyjimka, typicky ValueError (v tomto
pripade). Vracet None v pripade spatnych vstupnich dat neni uplne
nejlepsi napad, pokud to ma byt univerzalne pouzitelny kod (pokud jde
o tvou vlastni funkci pro interni pouziti, tak si tam samozrejme
naprogramuj, co ti
Petr Messner píše v Čt 18. 03. 2010 v 17:48 +0100:
Ahoj
Že by konstruktor udělal něco tak, aby žádný objekt nevznikl, nejde
(to není bug). Možností je několik:
- vyhazovat výjimku (jak již bylo zmíněno)
musím přiznat, že řešení pomocí výjimek mně přijde jako s kanonem na
vrabce, ikdyž to
Jirka Vejrazka píše v Čt 18. 03. 2010 v 18:09 +0100:
Ahoj,
velmi standardni reseni je vyjimka, typicky ValueError (v tomto
pripade). Vracet None v pripade spatnych vstupnich dat neni uplne
nejlepsi napad, pokud to ma byt univerzalne pouzitelny kod (pokud jde
o tvou vlastni funkci pro
musím přiznat, že řešení pomocí výjimek mně přijde jako s kanonem na
vrabce, ikdyž to má svoji logiku. Pokud vnímám výjimku jako nějakou
zásadně chybovou situaci, tak to do této věci nesedí, protože s chybným
vstupem se má počítat a kód by ho měl ošetřovat.
S tymto absolutne nesuhlasim. Ak
To zalezi na pouziti a kontextu, nebudu ti cpat neco co je pro tve
pouziti zbytecne. Ale v Pythonu se obvykle povazuje za normalni, ze
pokud nejaka funkce dostane chybna vstupni data, tak hodi vyjimku, aby
ten kdo ji volal ze udelal neco spatne. Pokud jsou chybna vstupni data
ocekavana, tak
azurIt píše v Čt 18. 03. 2010 v 20:35 +0100:
musím přiznat, že řešení pomocí výjimek mně přijde jako s kanonem na
vrabce, ikdyž to má svoji logiku. Pokud vnímám výjimku jako nějakou
zásadně chybovou situaci, tak to do této věci nesedí, protože s chybným
vstupem se má počítat a kód by ho měl
On 18.3.2010, at 23:11, David Rohleder wrote:
azurIt píše v Čt 18. 03. 2010 v 20:35 +0100:
musím přiznat, že řešení pomocí výjimek mně přijde jako s kanonem na
vrabce, ikdyž to má svoji logiku. Pokud vnímám výjimku jako nějakou
zásadně chybovou situaci, tak to do této věci nesedí, protože s
11 matches
Mail list logo