gpt4 book ai didi

python - 是什么让 pylint 认为我的类(class)是抽象的?

转载 作者:太空狗 更新时间:2023-10-30 00:30:45 28 4
gpt4 key购买 nike

据我了解,Python (2.5.2) 没有对抽象类的真正支持。为什么 pylint 提示这个类是“抽象类不引用?”它会为任何抛出 NotImplementedError 的类执行此操作吗?

我将每个类都放在自己的文件中,所以如果是这种情况,我想我别无选择,只能禁止显示此消息,但我希望可能有另一种解决方法。

"""Package Repository interface."""


class PackageRepository(object):
"""Package Repository interface."""

def __init__(self):
self.hello = "world"

def get_package(self, package_id):
"""
Get a package by ID.
"""
raise NotImplementedError( \
"get_package() method has not been implemented")

def get_packages(self):
"""
Get all packages.
"""
raise NotImplementedError( \
"get_packages() method has not been implemented")

def commit(self):
"""
Commit all changes.
"""
raise NotImplementedError( \
"commit() method has not been implemented")

def do_something(self):
"""
Doing something.
"""
return self.hello

编辑

也许我应该澄清一下。我意识到这是一个抽象类,我很想使用 abstract 关键字,但据我所知,这在 Python 中都不重要(至少在我当前使用的版本中)所以我没有费心做任何有趣的抽象技巧(就像那些 found here ) 而只是将其排除在外。

我很惊讶地看到 pylint 意识到这是一个独立的抽象类。是什么让pylint确定这是一个抽象类?它只是在寻找被扔到某处的 NotImplementedError 吗?

最佳答案

FWIW,引发 NotImplementedError 足以让 pylint 认为这是一个抽象类(这是绝对正确的)。来自 logilab.org/card/pylintfeatures:W0223:方法 %r 在类 %r 中是抽象的,但未被覆盖 当抽象方法(即引发 NotImplementedError)未在具体类中被覆盖时使用。 – Tobiesque 2 小时前

关于python - 是什么让 pylint 认为我的类(class)是抽象的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1981978/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com