Интерфейс Унаследованная декларация
Я пытаюсь использовать старый код, который был разработан разработчиком 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
В вашем коде это показывает, что вы все еще используете орудия, что, согласно предоставленной информации, является проблемой. Надеюсь, это поможет.