簡體   English   中英

接口繼承聲明

[英]Interface Inherited declaration

我正在嘗試使用由 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 中運行。

以下步驟為我解決了這個問題,

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

要使用實現者而不是 Python 建議的工具,您需要導入它,而不是導入工具

from zope.interface import implementer

在您的代碼中,它顯示您仍在使用工具,根據提供的信息,這似乎是問題所在。 希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM