[python] Trida pro IP adresu, vyjimky (bylo RE: Re: nevznik objektu)
Hynek Fabian
hynek.fabian na firma.seznam.cz
Středa Březen 24 16:15:16 CET 2010
Přikryl Petr (středa 24 Březen 2010 13:41:50):
> Prakticky žádný jazyk neumožní korektní "nevznik"
> objektu -- pokud nedojde k nějaké nízkoúrovňové havárii.
Python to prakticky umožňuje, viz můj zřejmě zapadlý post
o metodě __new__()
Volající _vždy_ dostane nějaké "jméno", ale protože v pythonu
je toto jméno jen reference v nějakém jmenném prostoru,
nic to neznamená. Klidně to může být reference na už
existující objekt, například None.
> V tomto smyslu se přimlouvám za to, aby objetk třídy
> IP vznikl vždy, ale aby se bránil použití v případě,
> kdy má nepoužitelný obsah
Zajímavé, já bych to řešil přesně naopak. Pokud je objekt
v _nepoužitelném_ stavu, tak dříve nebo později nějaká výjimka
poletí, čili ji radši vystřelím hned. Chci mít backtrace vzniku,
ne důsledku.
"Ne-objekt" (resp. jiný, nevyžádaný objekt) bych vracel
jen pokud by se to dalo považovat za _použitelný_ stav.
Třeba v nějakém volitelném inputu by se nezadaná IP adresa vyjádřila
jako 0.0.0.0, špatně zadaná IP by vystřelila výjimku.
Čili když se jedná o funkčnost, ne o chybu.
Tak jako tak jsou to kosmetické detaily. Davidův dotaz se týkal
invalidních IP adres, a tam bych rozhodně střílel výjimky.
Vrátit pahýl a následně ho porovnat na nenulovost by bylo hezké
zjednodušení, kdyby byl svět skutečně tak jednoduchý.
Ale časem přijde nějaký další chybový stav, další větev v IFu a pak
už to nebude o nic jednodušší než výjimka. A jak jsi zmínil, mnohem
náchylnější na opomenutí.
BTW ještě mě teď napadl design, kdy by konstruktor vrátil(!) výjimku,
volající by si ji prohlédnul a podle přání buď nějak zpracoval
nebo raisnul. (zvednul? :-)
Nenapadá mě žádný praktický důvod k něčemu tak krkolomnému,
ale stojí myslím za zmínku že python unese i (ne)pěkné vylomeniny.
Další informace o konferenci Python