preventing creation of instance

Alexander Schmolck a.schmolck at gmx.net
Tue Jun 17 20:33:17 EDT 2003


Peter Hansen <peter at engcorp.com> writes:

> Mirko Koenig wrote:
> > 
> > I have a class with a 'static' list of names to control if every instance
> > of the class has a different name.
> > 
> > class test:
> >         names = []
> >         def __init__( self, name ):
> >                 ...
> > 
> > Is it possible to chech in init if the given name exists in names and
> > then destroy itself. So that it will be not possible to create an
> > instance of this class, if the given name is existing.
> > 
> > adam = test( "adam" ) # should work
> > eve = test ( "adam" ) #should then not work. eve should be None.
> 
> I believe raising any exception in __init__ is the way to prevent
> the creation of the object.  I don't think you can do this with
> a technique that returns None, unless you are actually calling
> a factory function which internally attempts to create the object
> and catches the exception thrown, returning None if it happens.


>>> class Test(object):
...    def __new__(cls): return None
...
>>> Test()
>>> 

see http://www.python.org/2.2/descrintro.html#__new__

'as




More information about the Python-list mailing list