据我了解,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 中都不重要(至少在我目前使用的版本中),所以我没有费心去做任何有趣的抽象技巧(就像那些在这里找到的),只是把它排除在外。
我很惊讶地看到 pylint 发现它本身就是一个抽象类。是什么让 pylint 确定这是一个抽象类?它只是想NotImplementedError
被扔到某个地方吗?