コンテンツへスキップ
メニュー
この質問にフラグが付けられました
2 返信
6839 ビュー

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 ?

アバター
破棄
著作者

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 ?

最善の回答

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

 

アバター
破棄
著作者

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.

最善の回答

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.

アバター
破棄
著作者

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.

関連投稿 返信 ビュー 活動
4
2月 25
2894
1
8月 24
2291
2
11月 24
3488
3
10月 23
14991
2
2月 23
2551