PyDev:如何避免“赋值给保留的内置符号:id”?

时间:2017-04-16 13:30:36

标签: eclipse pydev

我有PyDev 5.6(适用于Eclipse)。我正在为id

收到“保留内置符号:id”的警告
class bla(object):
    def myfn(self, task):
        id = task['id']

我发现了#1457 Bogus“保留内置符号的分配”警告 (https://sourceforge.net/p/pydev/bugs/1457/) 但它适用于PyDev 2.3,问题应该在2.6.0中修复

我不想在代码分析中禁用所有“内置符号的重新定义”(在首选项中可以)。有人建议使用Id_id代替id,但对我来说,id是可变的,我希望将其保持为小写。

是否可以将Eclipse / PyDev设置为忽略此符号?

目前它在课堂上,它在func“myfn”(或其他)中本地使用。 但我想在“主要”级别上忽略它。如果您使用数据库工作,'id'无处不在:)

我是Eclipse和PyDev的新手。也许我忽略了一些设置。

感谢。

3 个答案:

答案 0 :(得分:1)

@ S.Ahmad说的是正确的,您可以在代码中使用注释忽略它(并使用PyDev本身来帮助您)。

另一种选择是在PyDev > Editor > Code Analysis > Others > Redefinition of builtin symbols中完全禁用该检查(针对所有变量)(没有为id禁用它的选项)。

就我个人而言,我试图保持清醒,不再重新定义你正在做的内置(甚至是id),并在分配给本地时给它一个更有意义的名称(例如:在你的例子中我是&#39 ; d称之为task_id,而不仅仅是id),并且通常可以直接定义它,因为id通常与id某事物有关(恕我直言,如果你给id更多的含义,它也会使代码更加清晰。

答案 1 :(得分:0)

选择/突出显示变量,然后按Ctrl + 1。

从下拉菜单中选择@ReservedAssignment。这将取消警告。

或者您只需在每个变量后粘贴# @ReservedAssignment即可取消该消息。

我认为我们不能在全球范围内为变量抑制此类消息,但我可能错了。

答案 2 :(得分:0)

现在我发现id(var)是func返回变量/ object的地址。嗯...也许是这个警告的原因。

我做了很少的研究:

>>> a= 2
>>> a
2
>>> type(a)
<class 'int'>
>>> id(a)
1650106848
>>> a.__str__
<method-wrapper '__str__' of int object at 0x00000000625AA1E0>
>>> "{:02x}".format( id(a) )      ### hex( id(a) )
'625aa1e0'                        ### so it's address
>>> type( id )
<class 'builtin_function_or_method'>
>>> id = 1
>>> type( id )
<class 'int'>
>>> "{:02x}".format( id(a) )      ### id() doesn't work now
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
>>>

执行id = something并破坏id()功能有多危险?