how to create instances of classes without calling the constructor?

castironpi at gmail.com castironpi at gmail.com
Mon Mar 17 21:33:02 EDT 2008


On Mar 17, 7:08 pm, "Dominik Jain" <removetoreply.dj... at gmx.net>
wrote:
> Hi!
>
> Does anyone know how an instance of a (new-style) class can be created
> without having to call the constructor (and providing the arguments it
> requires)? With old-style classes, this was possible using new.instance.
> Surely there must be a simple way to do this with new-style classes, too --  
> or else how does pickle manage?
>
> Best,
> Dominik

>>> class C: pass
...
>>> object.__new__( C )
<__main__.C object at 0x00B5ED70>

And for the record:

>>> class C:
...     def __init__( self ):
...             print( 'in init' )
...
>>> C()
in init
<__main__.C object at 0x00B5ED90>
>>> object.__new__( C )
<__main__.C object at 0x00B5EE30>

>>> type( C.__name__, (), dict( C.__dict__ ) )()
in init
<__main__.C object at 0x00B5ED90>

Which is kind of biza-a-r-rre.



More information about the Python-list mailing list