P.S:我熟悉简单继承的概念. 继承:
继承机制用于创建可重用性的概念.可重用性意味着在任何面向对象的编程中重用父类的代码.
好处 :
>减少代码冗余.
>提供代码可重用性.
>减少源代码大小并提高代码可读性.
>代码易于管理,分为父类和子类.
>通过覆盖基类来支持代码可扩展性
子类中的功能.
缺点:
>在继承中,基类和子类紧密耦合.
因此,如果您更改父类的代码,它将受到影响
所有的儿童班.
>在类层次结构中,许多数据成员保持未使用状态和内存
分配给他们没有利用.因此影响你的表现
程序,如果您没有正确实现继承.
在OpenERP中有两种继承方式.
1.经典使用Pythonic方式:
它允许通过继承从orm.Model派生的类(如添加了goegraphic支持的geoModel)向Model添加特定的“通用”行为.
class Myclass(GeoModel, AUtilsClass):
使用_inherit: –
主要目标是添加新行为/扩展现有模型.例如,您希望向发票添加新字段并添加新方法
class AccountInvoice(orm.Model): _inherit = "account.invoice" _column = {'my_field': fields.char('My new field')} def a_new_func(self, cr, uid, ids, x, y, context=None): # my stuff return something
覆盖现有方法:
def existing(self, cr, uid, ids, x, y, z, context=None): parent_res = super(AccountInvoice, self).existing(cr, uid, ids, x, y, z, context=context) # my stuff return parent_res_plus_my_stuff
2.Polymorphic方式: –
使用_inherits: –
使用_inherits时,您将以数据库方式执行一种多态模型.
例如,product.product继承product.template或res.users继承res.partner.这意味着我们创建了一个模型,该模型可以获得模型的知识,但在新数据库表中添加了附加数据/列.因此,当您创建用户时,所有合作伙伴数据都存储在res_partner表中(并创建合作伙伴),并且所有与用户相关的信息都存储在res_users表中.
为此,我们使用dict:_inherits = {‘res.partner’:’partner_id’}该键对应于基本模型和基本模型的外键值.
同样通过XML你可以继承Odoo视图(如表单视图,树视图,搜索视图等),你也可以从视图中更改行为
关键点 :
上述两种方法可以应用于Odoo服务器端,您可以在其中更改现有视图的行为或您可以在Odoo中更改的任何其他内容在客户端查看效果.
我希望这对你有帮助..