Python 什么';关键字超级函数在openerp开发中的使用是什么?

Python 什么';关键字超级函数在openerp开发中的使用是什么?,python,eclipse,openerp,Python,Eclipse,Openerp,我一直在学习使用Python语言开发OpenERP模块。我已经通过了一个我没有得到的源代码。我尝试了一些来源,但没有找到任何相关的帮助。请引导我理解这个代码。 代码是 def copy(self, cr, uid, id, default=None, context=None): if default is None: default = {} if context is None: context = {}

我一直在学习使用Python语言开发OpenERP模块。我已经通过了一个我没有得到的源代码。我尝试了一些来源,但没有找到任何相关的帮助。请引导我理解这个代码。 代码是

def copy(self, cr, uid, id, default=None, context=None):
        if default is None:
            default = {}
        if context is None:
            context = {}
        default.update({'depreciation_line_ids': [], 'state': 'draft'})
        return super(account_asset_asset, self).copy(cr, uid, id, default, context=context)
请尽快回复我。
最美好的祝愿

就python中super的经典用法而言,所提及的答案是正确的,但OpenERP本身也添加了一些曲折之处

请记住,您的所有模型都继承自osv.Model(或osv.TransientModel),因此从技术上讲,当您在上面的代码中调用super(account_asset_asset…)时,它将调用osv.Model上的copy方法,而osv.Model本身只是osv.BaseModel的精简继承,因此将调用该copy方法

osv.BaseModel.copy中的代码遍历各种已安装的模块,这些模块继承account_asset_asset,并在这些模块上按顺序动态执行复制方法。这通常是最后一个先安装的模块,一直工作到osv.BaseModel,但我认为您可以使用序列来控制它

所以。。当您重写ORM方法(如复制、创建等)时,超级调用的结果是调用先前安装的模块中继承相同模型的相同方法。简单地说,忽略osv.Model的经典Python继承,查看模型上的_inherit变量

这里有几个问题-有时候,继承的模型会在方法签名中添加额外的命名参数,因此请确保正确指定命名参数和未命名参数


如果您在复制、创建等方面做得太多,请确保同时返回超级调用的结果,否则将终止继承链。

请阅读以下内容:请尽快修复拼写。但我仍然不明白在这段代码中使用超级关键字的想法嘿,您知道_check\u recursion()的功能吗在python下的openerpdevelopment中,考虑到它的用途,创建新对象(即将其插入数据库)时会自动调用create方法。这段代码更改了两个字段、折旧行ID和状态,然后调用super以使ORM稍后实际执行创建_检查递归是另一个完整的问题。由于没有有用的源代码帮助,您可以定义检查递归的用法吗请停止为您的帖子签名。