>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 ošetřovat.
>>
>>
>> S tymto absolutne nesuhlasim. Ak hovoris o nejakom peknom osetreni chybneho 
>> vstupu (typu vypisanie chybovej spravy), tak toto _absolutne_ nie je ulohou 
>> funkcie ci objektu, ale konecnej aplikacie, ktora bude danu funkciu/objekt 
>> pouzivat. Osetrenie vstupu je samozrejme nutnost ale nie tymto sposobom - 
>> proste staci urobit aby funkcia 'zhucala' a nesnazila sa pokracovat (a 
>> pripadne nieco pokazit). Vynimka je na toto priamo stvorena.
>>
>
>
>Takže ti spadne celá aplikace. OK, s tím se dá počítat, pokud je to
>jednouživatelská aplikace. Ale co když jde o nějakou třeba webovou
>službu?



Aplikacia ti spadne len ak neosetris vynimku, ktoru vyvola dany objekt - ved to 
tam pisem,
vynimky mas osetrit na urovni aplikacie, chybove spravy nepatria do objektov. A 
prepac
ale s tym vratenim None miesto objektu mi to prijde ako kravina :) Proste nerob:

ipaddr = IP("192.1023.neco.1")
if not ipaddr:
  print "nieco sa niekde pokazilo ale bohuzial neviem co"



ale:



try:
  ipaddr = IP("192.1023.neco.1")
except ... :
  print "neplatna IP"
except ... :
  print "neplatny port"
except ... :
  print "neplatne nieco dalsie"
else:
  print "ok"







>
>>
>>
>> >
>> >Možná jsem prostě jenom příliš staromódní, začínal jsem programovat v
>> >jazycích, kde výjimky nebyly a python je jazyk, kde se výjimky dají
>> >používat téměř jako lék na cokoliv.
>> >
>> >>  - nevolat konstruktor (tedy nevytvářet objekt), ale volat funkci,
>> >> která sama vytvoří objekt, nebo vrátí None - podle mě nejlepší řešení
>> >
>> >To zní zajímavě, ale moc mně to nezapadá do takového toho "objektového"
>> >pohledu na svět. Nutno přiznat, že je to asi celkem jedno, z venku
>> >modulu to vypadá stejně jako přímo ten konstruktor objektu.
>> >
>> >>  - vytvořit objekt, který při porovnání s False vrátí True (lze
>> >> implementovat přetížením/vytvořením metody __nonzero__)
>> >
>> >Tak o __nonzero__ jsem nevěděl. zajímavé.
>> >
>> >>
>> >> BTW. počítáš i s IPv6, že jo? :)
>> >
>> >Ne :-) není správně podporován na druhé straně.
>> >
>> >D.
>> >
>> >
>> >>
>> >> Petr Messner
>> >>
>> >>
>> >> 2010/3/18 David Rohleder <da...@ics.muni.cz>:
>> >> > 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
>> >> >
>> >> > chtěl jsem pak třeba udělat:
>> >> >
>> >> > if not ipaddr:
>> >> >        print "zadavas blby vstup"
>> >> >
>> >> >
>> >> >
>> >> > chtěl jsem to vyřešit asi takto:
>> >> >
>> >> > class IP(object):
>> >> >        def __init__(self, IPadresa):
>> >> >                .....
>> >> >                if chyba: return None
>> >> >
>> >> >
>> >> >
>> >> > Jenomže konstruktor vrací vždycky None, tj. touto cestou to nejde.
>> >> >
>> >> > Zatím jediné, co mne napadlo, je vyřešit to pomocí výjimky, tj.např
>> >> >
>> >> > try:
>> >> >        ipaddr = IP("192.168.34536.45")
>> >> > except ValueError:
>> >> >        ipaddr = None
>> >> >
>> >> > Ale myslím, že kdyby objekt vůbec nevznikl, tak by to bylo lepší. Jde
>> >> > to, nebo to nejde?
>> >> >
>> >> > D.
>> >> >
>> >> >
>> >> > --
>> >> > David Rohleder <da...@ics.muni.cz>
>> >> >
>> >> > _______________________________________________
>> >> > 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
_______________________________________________
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem