Мой класс просто так:
from openerp import tools
from openerp.osv import osv, fields
import requests
import logging
import json
_logger = logging.getLogger(__name__)
class stock_move(osv.Model):
_inherit = 'stock.move'
def create(self, cr, uid, vals, context=None):
new_id = super(stock_move, self).create(cr, uid, vals, context=context)
Но когда я запускаю его, я получаю следующее:
File "/opt/odoo/ebuynow/ebn_oddjobs/models.py", line 15, in create
new_id = super(stock_move, self).create(cr, uid, vals, context=context)
UnboundLocalError: local variable 'stock_move' referenced before assignment
Я почти уверен, что это правильный способ использования super(), потому что этот код отлично работал в другой системе. Этот вопрос более актуален, если есть кто-нибудь, кто знает, что это может быть в системе или среде Python, что может привести к тому, что он не распознает stock_move как имя класса для вызова метода create() родительского класса.
Система — сервер Ubuntu 14.04, Python 2.7.6. Предыдущая система, на которой работал код, была Ubuntu Desktop 14.04, на которой также работал Python 2.7.6.
Я просто не вижу причин, по которым это могло бы произойти. Почему Python считает stock_move локальной переменной?
Редактировать:
После изменения имени класса я получаю следующее:
new_id = super(stock_move_too, self).create(cr, uid, vals, context=context)
UnboundLocalError: local variable 'stock_move' referenced before assignment
stock_move вообще не используется, а ошибка все еще отображается ??
Редактировать2:
Проблема была вызвана тем, что odoo-server фактически не отключился, когда я ввел команду «sudo /etc/init.d/odoo-server restart». Как только я убил процесс, а затем перезапустил его, он начал перезапускаться правильно.
create
; вы повторно использовали имяstock_move
где-то еще в этом методе. - person Martijn Pieters   schedule 05.12.2014for
, цели оператораwith
, имени аргумента или оператораimport
, использующего то же имя в методеcreate
. - person Martijn Pieters   schedule 05.12.2014.pyc
для модуля (кешированный байт-код); если отметка времени в этом файле новее, Python не обнаружит, что вы изменили источник. - person Martijn Pieters   schedule 05.12.2014