如何修复PyDev "方法应以self作为第一个参数"错误
我在Eclipse里用PyDev开发Python,结果我的一些代码在代码分析工具里出现了错误。具体来说:
class Group(object):
def key(self, k):
class Subkey(object):
def __enter__(s):
self._settings.beginGroup(k)
return self
def __exit__(s, type, value, tb):
self._settings.endGroup()
return Subkey()
它给我报了一个错误,提示说"方法 '__enter__- group' 的第一个参数应该是 self"
,还有一个类似的错误是关于__exit__
的。有没有办法解决这个问题,而不需要把self
赋值给另一个变量,然后在其他方法的定义里重复使用这个变量呢?
6 个回答
6
你可以使用一个装饰器:
class aClass:
def __init__(self): # instance-dependent method
self.atribite1 = []
self.atribute2 = 0
@staticmethod
def static(): # static method
pass
18
在PyDev中,如果你在一行代码上遇到错误,可以按下 Ctrl+1
,它会给你一个解决方案,让你可以忽略这行代码的错误。在这个特定的情况下,它会通过在行末加上 #@NoSelf
来让你忽略这个错误。此外,Ctrl+1
在处理一些未使用的导入或者其他情况时也很有用。
21
你可以在设置里关闭那个错误提示...
Window > Preferences > Pydev > Editor > Code Analysis > Others
或者可以重构一下代码...
class Group(object):
def key(self, k):
outer_self = self
class Subkey(object):
def __enter__(self):
outer_self._settings.beginGroup(k)
return outer_self
def __exit__(self, type, value, tb):
outer_self._settings.endGroup()
return Subkey()
你还想要什么呢?这些错误检查是为了帮助你的。如果你觉得它们不是合理的错误,可以选择关闭它们或者重构代码。
在这种情况下,我建议重构代码。这样会更容易阅读,正如King Radical的回答所示。他没有明白s
其实是另一个self
。