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í - vytvořit objekt, který při porovnání s False vrátí True (lze implementovat přetížením/vytvořením metody __nonzero__) BTW. počítáš i s IPv6, že jo? :) 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