Интерфейс Унаследованная декларация

Я пытаюсь использовать старый код, который был разработан разработчиком Github. Код использует реализации в библиотеке zope.interface для объявления интерфейсов элементов класса. Поскольку инструменты в библиотеке больше не работают на Python 3.6, я сталкиваюсь с этой ошибкой:

TypeError: Class advice impossible in Python3.  Use the @implementer class decorator instead.

Несколько сайтов объяснили, как заменить орудия @implementer для работы на Python 3.6, как здесь. Но я не нашел ни одного примера, объясняющего, как обновить код, когда zope.interface.implements был использован в качестве наследства. Код выглядит так:

from zope.interface import implements
class Car(implements(Moveable)):
     def __init__(self, x, v, lane, model: IDM, lane_change: LaneChange,
             length):
...

Я хотел бы обновить этот код для работы на Python 3.6. Я пробовал это

@implementer(Moveable) 
class Car:
     def __init__(self, x, v, lane, model: IDM, lane_change: LaneChange,
             length):

но это не работает. Пожалуйста, помогите мне разобраться, как сделать приведенный выше код работающим на Python 3.6.

0 ответов

Ниже шаги решили проблему для меня,

pip uninstall apex
git clone https://www.github.com/nvidia/apex
cd apex
python3 setup.py install

Чтобы использовать средство реализации вместо инструментов, как предлагает Python, вам необходимо импортировать его, а не импортировать инструменты.

from zope.interface import implementer

В вашем коде это показывает, что вы все еще используете орудия, что, согласно предоставленной информации, является проблемой. Надеюсь, это поможет.

Другие вопросы по тегам