我注意到皮层不能很好地处理以下情况:

@property
def foo(self):
   return self._bar.foo

@foo.setter
def foo(self, foo_val):
   self._bar.foo = foo_val

虽然这是一个完全有效的案例语法,因为Python2.6

它说我定义了两次Foo,并且不了解“ .setter”语法(给出E1101&E0102)。

是否有解决方法无需更改代码?我不想禁用错误,因为它们对其他地方很重要。

我还能使用其他工具可以更好地处理它吗?我已经检查了pyflakes,并且行为相同。 PYDEV的代码分析似乎可以更好地处理此特定情况,但是它没有检查pylint的约定,重构和其他酷功能,我无法从外部脚本(或可以?)运行它。

谢谢!

有帮助吗?

解决方案

这是票 http://www.logilab.org/ticket/51222 在皮革项目上。监视其状态。

其他提示

如果您不想在全球禁用错误,则可以将它们禁用这些特定行,例如:

def foo(self, foo_val): # pylint: disable-msg=E0102

嗯。恼人的。我可以找到的所有主要工具(Pyflakes,Pylint,Pychecker)都表现出此问题。看来问题在字节代码中开始,但我无法得到 dis 给我任何字节代码以供对象属性。

如果您使用此语法,看起来您会更好:

# Changed to longer member names to reduce pylint grousing
class HughClass(object):
    def __init__(self, init_value):
        self._hugh = init_value
    def hugh_setter(self):
        return self._hugh * 2
    def hugh_getter(self, value):
        self._hugh = value / 2
    hugh = property(hugh_getter, hugh_setter)

这是一个 不错的博客文章 在上面。大声笑引用:

Getters和Setter属于Java和C ++的悲伤世界。

这是 报道是pyflakes中的虫子, ,并且似乎是在当前的中继中固定的。所以我想答案(现在)是:pyflakes!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top