我有PyDev 5.6(适用于Eclipse)。我正在为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的新手。也许我忽略了一些设置。
感谢。
答案 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()
功能有多危险?