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 protected]> > 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 > -- You received this bug notification because you are a member of OpenERP CTP, which is subscribed to OpenERP Server. 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 _______________________________________________ Mailing list: https://launchpad.net/~openerp-dev-gtk Post to : [email protected] Unsubscribe : https://launchpad.net/~openerp-dev-gtk More help : https://help.launchpad.net/ListHelp

