我正在尝试使用由Github开发人员开发的旧代码。该代码使用zope.interface库中的实现在类的元素上声明接口。由于库中的实现在Python 3.6上不再起作用,因此我遇到了以下错误:
TypeError: Class advice impossible in Python3. Use the @implementer class decorator instead.
几个网站已经说明了如何用@implementer代替工具以在Python 3.6上工作,例如here。但是我还没有找到任何示例来说明当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 :(得分:2)
下面的步骤为我解决了这个问题,
pip uninstall apex
git clone https://www.github.com/nvidia/apex
cd apex
python3 setup.py install
答案 1 :(得分:0)
要使用实现程序而不是Python建议的实现程序,您需要导入它,而不是导入实现程序
from zope.interface import implementer
在您的代码中,它表明您仍在使用工具,根据提供的信息,这似乎是问题所在。希望对您有所帮助。