Comment 2 for bug 822735

Revision history for this message
Thibaut DIRLIK (Logica) (thibaut-dirlik) wrote : Re: [Bug 822735] Re: Automatic instanciation doesn't call __new__

For example, I wanted to add some dynamic columns to an object based in
inheritance. If a class inherits of MyClassBase, then some magic happends in
__new__ and some columns are added automatically in _columns.

Finally, I used a metaclass to do this. But I don't understand why you would
not call __new__ on the object ? Is there any specific reason to no support
this correctly ?

2011/8/23 Vo Minh Thu (OpenERP) <email address hidden>

> Thibaut,
>
> You are right that we call object.__new__ but this is not something new
> in trunk (i.e. it is the same thing in 6.0).
>
> Is it really a problem for you? Can you give a use case where you want
> your own __new__to be called instead of __init__?
>
> ** Changed in: openobject-server
> Status: Confirmed => Incomplete
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/822735
>
> Title:
> Automatic instanciation doesn't call __new__
>
> Status in OpenERP Server:
> Incomplete
>
> Bug description:
> Since we can create an object with explicitly instanciating it, the
> __new__ methods are not called anymore. Here is an example :
>
> class test(osv.osv):
> _name = 'test.test'
> _columns = {'test' : fields.boolean('True/False')}
>
> def __new__(cls, *args, **kwargs):
> print 'NEW CALLED'
> return super(test, cls).__new__(cls, *args, **kwargs)
> #test()
>
> In this example, the __new__ method will never be called. Uncomment
> the instanciation, and it will. The problem is the makeInstance()
> method : http://bazaar.launchpad.net/~openerp/openobject-
> server/trunk/view/head:/openerp/osv/orm.py#L804 !
>
> It calls the object.__new__ instead of calling the create class
> __new__ method. Please fix it, because it might break some v6.0
> modules. Thanks for reading !
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/openobject-server/+bug/822735/+subscriptions
>