我注意到pylint处理不好的情况:
@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的常规,重构和其他很酷的功能,我不能从外部脚本运行它(或者我可以吗?)
谢谢!
答案 0 :(得分:4)
如果您不想全局禁用错误,可以为这些特定行禁用它们,例如:
def foo(self, foo_val): # pylint: disable-msg=E0102
答案 1 :(得分:2)
这是pylint项目中的票证http://www.logilab.org/ticket/51222。监控它的状态。
答案 2 :(得分:1)
咦。烦人。我能找到的所有主要工具(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)
这是一个nice blog article。 LOL引号:
吸气鬼和二传手属于悲伤 Java和C ++世界。
答案 3 :(得分:0)
这是reported as a bug in pyflakes,它似乎在当前主干中得到修复。所以我猜答案(现在)是:pyflakes!