我非常希望将 pylint集成到构建过程中 我的 python 项目,但我遇到了一个表演停止: 其中一个 我发现非常有用的错误类型—— : < code > E1101: *% s% r has no% r Member * ——在使用常见的 django 字段时不断报告错误, 例如:
E1101:125:get_user_tags: Class 'Tag' has no 'objects' member
是由这个密码引起的:
def get_user_tags(username):
"""
Gets all the tags that username has used.
Returns a query set.
"""
return Tag.objects.filter( ## This line triggers the error.
tagownership__users__username__exact=username).distinct()
# Here is the Tag class, models.Model is provided by Django:
class Tag(models.Model):
"""
Model for user-defined strings that help categorize Events on
on a per-user basis.
"""
name = models.CharField(max_length=500, null=False, unique=True)
def __unicode__(self):
return self.name
如何调优 Pylint 以正确地考虑对象等字段?(我还查看了 Django 源代码,但是我无法找到 objects
的实现,因此我怀疑它不“仅仅”是一个类字段。另一方面,我对 python 相当陌生,所以我很可能忽略了一些东西。)
编辑: 我发现告诉 pylint 不要警告这些警告的唯一方法是阻止类型(E1101)的所有错误,这是不可接受的解决方案,因为(在我看来)这是一个非常有用的错误。如果还有其他方法,而不增加 pylint 源代码,请指出具体细节:)
有关我使用 pychecker
和 pyflakes
时遇到的问题的摘要,请参阅 这里-它们已被证明对于一般使用来说远远不稳定。(在 pychecker 的例子中,崩溃源自 pychecker 代码——不是源代码,而是加载/调用。)