[英]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.