[python] nevznik objektu

azurIt azurit na pobox.sk
Čtvrtek Březen 18 17:46:38 CET 2010


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


>-----Pôvodná správa-----
>Od: David Rohleder [mailto:davro na ics.muni.cz]
>Komu: python na py.cz
>Predmet: [python] nevznik objektu
>
>
>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 <davro na ics.muni.cz>
>
>_______________________________________________
>Python mailing list
>Python na py.cz
>http://www.py.cz/mailman/listinfo/python


Další informace o konferenci Python