Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 常见原因';int';对象没有属性';变量'&引用;?_Python_Python 3.x_Tkinter - Fatal编程技术网

Python 常见原因';int';对象没有属性';变量'&引用;?

Python 常见原因';int';对象没有属性';变量'&引用;?,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,鉴于有关'int'对象没有属性“variable”的堆栈溢出问题太多,仅针对此类主题错误消息的特定场景,我想知道在涉及此类错误消息的任何给定场景中需要重新检查的代码方面 简单地说,这个网站上没有一个问题需要对所述错误消息进行广泛的推理,我想这里有相当多的读者更愿意研究这些类型的问题,因为这是一种常见的情况,这里的用户问同样的问题,但问题和答案过于具体到该特定领域,没有任何用处。总的来说,本网站上的许多类似问题对于某个人代码的特定上下文来说过于具体 我想确保这个问题的答案能够回答几乎任何关于上述错

鉴于有关
'int'对象没有属性“variable”
的堆栈溢出问题太多,仅针对此类主题错误消息的特定场景,我想知道在涉及此类错误消息的任何给定场景中需要重新检查的代码方面

简单地说,这个网站上没有一个问题需要对所述错误消息进行广泛的推理,我想这里有相当多的读者更愿意研究这些类型的问题,因为这是一种常见的情况,这里的用户问同样的问题,但问题和答案过于具体到该特定领域,没有任何用处。总的来说,本网站上的许多类似问题对于某个人代码的特定上下文来说过于具体

我想确保这个问题的答案能够回答几乎任何关于上述错误消息的给定情况。对于这样一个常见的问题,我希望大多数
'int'对象没有属性变量
问题在这里得到解决

对于这样一个经常被问到的问题,我想要大部分的“int” 对象没有要在此处解决的属性变量问题

这是我的尝试。首先,这不是最好的描述:

'int' object has no attribute 'variable'
正如我看到的大多数示例的形式:

'int' object has no attribute 'method'
并且是由于在
int
上调用未由
int
实现的方法而导致的:

>>> x = 4
>>> x.length()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute 'length'
>>> 
>>> x = 4
>>> x[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object has no attribute '__getitem__'
>>> 
你可以叫他们:

>>> help(int.bit_length)
Help on method_descriptor:

bit_length(...)
    int.bit_length() -> int

    Number of bits necessary to represent self in binary.
    >>> bin(37)
    '0b100101'
    >>> (37).bit_length()
    6

>>> 
这向我们展示了如何调用
int
上的方法,而不会将句点与小数点混淆:

>>> (128).bit_length()
8
>>>
但大多数情况下,并不是有人试图调用
int
上的方法,而是
int
错误地接收了另一种对象类型的消息。例如,这是一个常见错误:

TypeError: 'int' object has no attribute '__getitem__'
当您尝试为
int
下标时,会在Python2中出现:

>>> x = 4
>>> x.length()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute 'length'
>>> 
>>> x = 4
>>> x[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object has no attribute '__getitem__'
>>> 
>x=4
>>>x[0]
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“int”对象没有属性“\uuuu getitem\uuuu”
>>> 
Python3提供了更有用的消息,
TypeError:'int'对象不可下标

如果重用相同的变量名来保存不同类型的数据,有时可能会发生这种情况,这是一种需要避免的做法


如果出现类似于
“AttributeError:'int'对象没有属性“append”
”的错误,请考虑什么类型的对象响应
append()
。一个
列表
可以,所以在我的代码中的某个地方,我在一个
int
上调用
append()
,我以为我有一个
列表

错误“foo”对象没有属性“bar”,表示程序中存在错误。这是一个适用于任何此类情况的答案。您的问题是您使用的是动态类型语言。使用静态类型语言,您无法运行包含此错误的程序。也许你应该研究python的类型暗示来缓解这个问题。啊,我一定不知道它是
'int'对象没有属性'method'
,而不是
'int'对象没有属性'variable'
。我现在明白了错误的原因。@RonZhang,从技术上讲,它可能是一个实例变量,但我在搜索中发现的示例大部分都是方法,所以我将重点放在了这一点上。