【问题标题】:@overrides module fails in Python@overrides 模块在 Python 中失败
【发布时间】:2021-01-18 11:09:24
【问题描述】:

this nice module之后我已经使用了至少一年没有问题,我正在做as the doc says

使用pip install overrides安装

BaseSegmenter.py

from overrides import EnforceOverrides

class BaseSegmenter(EnforceOverrides):
    def __init__(self):
        pass

    def segment_defects(self):
        pass

DefectSegmenter.py

from defect_segmentation import BaseSegmenter
from overrides import overrides


class AutoencoderSegmenter(BaseSegmenter):
    def __init__(self):
        super().__init__()

    @overrides
    def segment_defects(self, inspected, warped, warp_mask):
        pass

这给了我

Traceback (most recent call last):
  File "C:/noam/autoencoder1/Main.py", line 10, in <module>
    from defect_segmentation.DefectSegmenter import AutoencoderSegmenter
  File "C:\noam\autoencoder1\defect_segmentation\DefectSegmenter.py", line 5, in <module>
    class AutoencoderSegmenter(BaseSegmenter):
  File "C:\noam\autoencoder1\defect_segmentation\DefectSegmenter.py", line 9, in AutoencoderSegmenter
    @overrides
  File "C:\noam\autoencoder1\venv\lib\site-packages\overrides\overrides.py", line 67, in overrides
    raise AssertionError('No super class method found for "%s"' % method.__name__)
AssertionError: No super class method found for "segment_defects"

当执行以下行时会发生这种情况:

from defect_segmentation.DefectSegmenter import AutoencoderSegmenter

我可能缺少一些基本的东西,但我的眼睛看到超级类确实有segment_defects...

请帮忙:)

【问题讨论】:

    标签: python overriding


    【解决方案1】:

    问题出在DefectSegmenter.py

    from defect_segmentation import BaseSegmenter
    

    而不是正确的

    from defect_segmentation.BaseSegmenter import BaseSegmenter
    

    这是一个模块,而不是一个类。这使得 @overrides 模块中的反射失败。

    【讨论】:

      猜你喜欢
      • 2020-05-21
      • 2020-06-19
      • 2022-12-03
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 2016-04-10
      • 2012-09-12
      • 2019-05-01
      相关资源
      最近更新 更多