Интерфейс Унаследованная декларация - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь использовать старый код, который был разработан разработчиком 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.

1 Ответ

0 голосов
/ 20 июня 2019

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

from zope.interface import implementer

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

...