Ir al contenido
Menú
Se marcó esta pregunta
2 Respuestas
6844 Vistas

I came across inheritance of ODOO.

Here each module inherit other where _inherit use that's fine we understood my that name new fields are create in that model.

But in new inherited class how it call parent class or original class methods.

Like in stock module, product model inhirited and new methods added and executed, also methods define in product can be call from stock i product model's method.

How this all work ? Please expert shall this features hows works ?

Avatar
Descartar
Autor

Python default overwrite class declaration, then how its works here ? Like product and stock module have class product declaration, where it do not overwrite previously declared class method and features ? How it keeps methods declared in other modules ?

Mejor respuesta

See the link below, otherwise you can find a lot of example on addons module (e.g. sale_stock).

 https://www.odoo.com/forum/help-1/question/the-different-openerp-model-inheritance-mechanisms-whats-the-difference-between-them-and-when-should-they-be-used-46

I don't know if I have understood your question, here is an example :

suppose you want to override the create and the unlink methodes of the class account_invoice:

class account_invoice(osv.Model):
    _inherit = "account.invoice"

    def unlink(self, cr, uid, ids,  context={}):
        #do something here  
        return super(account_invoice, self).unlink(cr, uid, ids,  context) #invoke parent methode

    def create(self, cr, user, vals, context=None):
        inv_id = super(account_invoice,self).create(cr, user, vals, context=context) #invoke parent methode

         #do something here 
         return inv_id

 account_invoice()

 

Hopes that helps

 

Avatar
Descartar
Autor

I want to know how it works, by default paython with same named class, over write their mehtod. in odoo same name class can be used and also can be able to access all methods.

Mejor respuesta

Odoo inheritance implementation is just python 2 implementation of class/object oriented programming.

But in new inherited class how it call parent class or original class methods.

Check https://docs.python.org/2/library/functions.html#super. Odoo orm makes sure every model extend any other model if the keyword _inherit is defined. The extension will behave like class inheritance in OPP sense. To learn more about the orm, check folder openerp/osv.

Avatar
Descartar
Autor

Its fine that _inherits add new fields in table. but how it keeps methods even with same class name or other class named. ? how it run time evaluate right methods and other self.methods even defined in multiple codes, let me know exact things, I had already dig many things.

Publicaciones relacionadas Respuestas Vistas Actividad
4
feb 25
2895
1
ago 24
2291
2
nov 24
3489
3
oct 23
14994
2
feb 23
2551