Я новичок в openERP и имею интервью. Пожалуйста, объясните идею разных типов наследования в openERP, я думаю, что это всего 3 типа. пожалуйста, объясните это очень просто с точки зрения интервью.
P.S: Я знаком с концепцией простого наследования.Наследование в openERP (odoo)
ответ
Наследование:
механизм наследования используется для создания идеи повторного usability.there повторно юзабилити означает, что повторное использование кода родительского класса в любой объектно-ориентированного программирования.
Преимущества:
- Сокращение кода избыточности.
- Обеспечивает повторное использование кода.
- Уменьшает размер исходного кода и улучшает читаемость кода.
- Код прост в управлении и разделен на родительский и дочерний классы.
- Поддерживает расширение кода путем переопределения базового класса функциональность в дочерних классах.
Недостатки:
В Наследование классов базового класса и ребенка тесно связаны между собой. Следовательно, если вы измените код родительского класса, он будет влиять на все дочерние классы.
В иерархии классов многие элементы данных остаются неиспользованными и выделенная им память не используется. Следовательно, это влияет на производительность вашей программы , если вы не реализовали наследование правильно.
Существует два способа наследования в OpenERP.
1.Classical Использование Pythonic Путь:
Это позволяет добавлять конкретные «родовую» поведение модели путем наследования классов, которые проистекают из orm.Model как Geomodel, который добавляет поддержку goegraphic.
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.Полиморфный Way: -
Использование _inherits: -
При использовании _inherits вы будете делать вид полиморфных модели на пути к базе данных.
Например product.product
наследуетproduct.template
или res.users
наследованнаяres.partner
. Это означает, что мы создаем модель, которая получает представление о модели, но добавляет дополнительные данные/столбцы в новую таблицу базы данных. Поэтому, когда вы создаете пользователя, все данные партнера хранятся в таблице res_partner
(и создается партнер), и вся информация, связанная с пользователем, хранится в таблице res_users
.
Для этого используется dict: _inherits = {'res.partner': 'partner_id'}
. Ключ соответствует базовой модели и значению внешнего ключа базовой модели.
Как же через XML вы можете сделать унаследуют вид Odoo (вид по форме, вид дерева, поиск Просмотр и т.д ..), и вы можете также изменить поведение с точки зрения
Ключевой момент:
Вышеуказанный два метода могут применяться на стороне сервера Odoo и которые вы можете изменить поведение существующего представления или любые другие вещи, которые вы можете изменить в Odoo, рассматривая эффект на вашей стороне клиента.
Я надеюсь, что это должно полезно для вас .. :)
- 1. Наследование немодельного базового класса в Odoo/OpenERP
- 2. Наследование шаблонов в odoo
- 3. Наследование настроенного модуля в Odoo
- 4. Openerp/Odoo Scalablity limit
- 5. Механизм блокировки Odoo (OpenERP)
- 6. Наследование данные в OpenERP
- 7. Extend Odoo/Openerp datatype
- 8. Секвенирование колонка в Odoo/OpenERP
- 9. Контроль доступа в odoo/openerp
- 10. ошибка поля в odoo (openerp)?
- 11. Odoo/OpenERP Поля отображения одного2many
- 12. Odoo (openERP) улучшить фильтр поиска
- 13. Как правильно отладить OpenERP/Odoo?
- 14. KeyError: 'my.object' Ok [Odoo/Openerp]
- 15. Ошибка пользовательского поля Odoo (OpenERP)
- 16. Наследование настраиваемого модуля в openerp
- 17. Какие операторы домена в Openerp/Odoo?
- 18. дизайнер отчетов в Odoo/OpenERP 8
- 19. Qweb Xpath дочернего узла в odoo/openERP?
- 20. Создайте (пользовательский) модуль в Odoo OpenERP
- 21. В чем разница между OpenERP и Odoo?
- 22. Как наследовать модуль hr.employee в openerp (odoo)
- 23. динамически добавить страницу в книге Odoo/OpenERP
- 24. О программировании действий сервера в Odoo/OpenERP
- 25. OpenERP Наследование с настраиваемым модулем
- 26. OpenERP (Odoo) V9 и мобильный каркас
- 27. Где OpenERP (Odoo) находит путь к модулю?
- 28. odoo/OpenERP V8 - Учебник по сообщениям QWeb
- 29. Odoo/OpenERP x2many display create/edit only
- 30. Отношение OpenERP/Odoo к синтаксису XML
Вы пропустили 3-ий, который упоминается в odoo документации. это не настоящее наследование, а копия атрибутов моделей путем объединения _inherit и _name. Может быть, вы тоже должны это упомянуть? :-) – CZoellner
Yup спасибо за комментарий –
Можем ли мы использовать _inherits & _inherit оба одновременно? @DASADIYACHAITANYA –