AttributeError: ‘int’ 对象没有属性 ‘X’ (Python)

目录

AttributeError: ‘int’ object has no attribute ‘X’ (Python)

  1. AttributeError: ‘int’ 对象没有属性 ‘X’ (Python)
  2. AttributeError: ‘int’ 对象没有属性 ‘append’
  3. AttributeError: ‘int’ 对象没有属性 ‘split’
  4. AttributeError: ‘int’ 对象没有属性 ‘encode’

AttributeError: ‘int’ 对象没有属性 ‘X’ (Python)

当我们尝试访问整数上不存在的属性时,会出现 Python“AttributeError: ‘int’ object has no attribute”。

要解决该错误,请在访问属性之前确保该值属于预期类型。

attributeerror int 对象没有属性

下面是错误如何发生的示例。

主程序
example = 123 print(type(example)) # 👉️ <class 'int'> # ⛔️ AttributeError: 'int' object has no attribute 'startswith' result = example.startswith('12')

我们试图在整数上调用该startswith()方法并得到错误。

如果您print()访问属性的值,它将是一个整数。

要解决该错误,您需要查明在代码中将值设置为整数的确切位置并更正分配。

在调用方法之前将整数转换为字符串

要解决示例中的错误,我们必须将整数转换为 a
string才能访问特定于字符串的startswith()方法。

主程序
example = 123 result = str(example).startswith('12') print(result) # 👉️ True

错误的一个常见原因是尝试对str.isdigit()整数调用该方法。

主程序
my_str = '123' my_str = 123 # ⛔️ AttributeError: 'int' object has no attribute 'isdigit' print(my_str.isdigit())

attributeerror int 对象没有属性 isdigit

要解决此错误,请在调用该方法之前将值转换为字符串
str.isdigit()

主程序
my_num = '123' print(str(my_num).isdigit()) # 👉️ True

如果字符串中的所有字符都是数字并且至少有 1 个字符,则str.isdigit方法返回
,否则
返回。
TrueFalse

错误地将变量重新分配给整数

最常见的错误是由代码中某处将变量重新分配给整数引起的。

主程序
nums = [1, 2, 3] # 👇️ reassignment of nums to an integer nums = 1 # ⛔️ AttributeError: 'int' object has no attribute nums.append(4) print(nums)

我们nums最初将变量设置为一个列表,但后来为其分配了一个整数。

要解决这种情况下的错误,我们必须删除重新分配或更正它。

主程序
nums = [1, 2, 3] nums.append(4) print(nums) # 👉️ [1, 2, 3, 4]

nums变量在我们的代码中的任何地方都没有设置为整数,因此不会引发错误。

在访问对象之前检查对象是否包含属性

如果需要检查对象是否包含属性,请使用该hasattr
函数。

主程序
example = 5 if hasattr(example, 'lower'): print(example.lower()) else: print('Attribute is not present on object') # 👉️ this runs

hasattr函数

采用以下 2 个参数:

姓名 描述
object 我们要测试属性是否存在的对象
name 对象中要检查的属性的名称

如果字符串是对象属性之一的名称,则hasattr()函数返回,否则返回。TrueFalse

hasattr如果该属性在对象上不存在,则使用该函数将处理错误,但是,您仍然必须弄清楚代码中变量在何处被分配了整数值。

查看对象有哪些属性

开始调试的一个好方法是print(dir(your_object))查看对象具有哪些属性。

这是打印 an 的属性的示例integer

主程序
example = 5 # [..., 'as_integer_ratio', 'bit_count', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes'...] print(dir(example))

如果将一个类传递给dir()
函数,它会返回该类属性的名称列表,并递归地返回其基类的属性。

如果您尝试访问不在此列表中的任何属性,您将收到错误。

要解决此错误,请在访问属性之前将值转换为正确的类型,或者在访问任何属性之前更正分配给变量的值的类型。

目录

  1. AttributeError: ‘int’ 对象没有属性 ‘append’
  2. AttributeError: ‘int’ 对象没有属性 ‘split’
  3. AttributeError: ‘int’ 对象没有属性 ‘encode’

AttributeError: ‘int’ 对象没有属性 ‘append’

Python“AttributeError: ‘int’ object has no attribute ‘append’” 发生在我们append()对整数调用该方法时。

要解决该错误,请确保您调用的值的append类型为
list

attributeerror int 对象没有附加属性

下面是错误如何发生的示例。

主程序
my_list = ['a', 'b', 'c'] # 👇️ reassign variable to an integer my_list = 10 print(type(my_list)) # 👉️ <class 'int'> # ⛔️ AttributeError: 'int' object has no attribute 'append' my_list.append('d')

我们将my_list变量重新分配给一个整数,并尝试调用
append()导致错误的整数的方法。

如果您print()调用的是值append(),它将是一个整数。

要解决该错误,您需要查明在代码中将值设置为整数的确切位置并更正分配。

要解决示例中的错误,我们必须删除重新分配或更正它。

主程序
my_list = ['a', 'b', 'c'] my_list.append('d') print(my_list) # 👉️ ['a', 'b', 'c', 'd']

append ()方法将一个项目添加到列表的末尾。

对整数调用该方法会导致错误。

确保您在调用 时没有尝试访问特定索引处的列表
append

主程序
fav_numbers = [1, 2, 3] # ⛔️ AttributeError: 'int' object has no attribute 'append' fav_numbers[0].append(4) print(fav_numbers)

fav_numbers变量存储一个数字列表。

我们访问了 index 处的列表项0(它是整数),并对导致错误的结果调用了方法。 1append()

要解决此场景中的错误,请删除索引访问器并调用
append()列表中的方法。

主程序
fav_numbers = [1, 2, 3] fav_numbers.append(4) print(fav_numbers) # 👉️ [1, 2, 3, 4]

您还可以将调用返回整数的函数的结果分配给变量。

主程序
def get_list(): return 100 my_list = get_list() # ⛔️ AttributeError: 'int' object has no attribute 'append' my_list.append('d')

变量my_list被分配给调用函数的结果get_list

该函数返回一个整数,因此我们无法调用append()它。

要解决该错误,您必须找到为特定变量分配整数而不是列表的位置并更正分配。

目录

  1. AttributeError: ‘int’ 对象没有属性 ‘split’
  2. AttributeError: ‘int’ 对象没有属性 ‘encode’

AttributeError: ‘int’ 对象没有属性 ‘split’

Python“AttributeError: ‘int’ object has no attribute ‘split’” 发生在我们split()对整数调用该方法时。

要解决该错误,请确保您调用的值的split类型为
string

attributeerror int 对象没有属性拆分

下面是错误如何发生的示例。

主程序
my_string = 'bobby,hadz' my_string = 100 print(type(my_string)) # <class 'int'> # ⛔️ AttributeError: 'int' object has no attribute 'split' print(my_string.split(','))

我们将my_string变量重新分配给一个整数,并尝试调用
split()导致错误的整数的方法。

如果您print()调用的是值split(),它将是一个整数。

要解决该错误,您需要查明在代码中将值设置为整数的确切位置并更正分配。

要解决示例中的错误,我们必须删除重新分配或更正它。

主程序
my_string = 'bobby,hadz' print(my_string.split(',')) # 👉️ ['bobby', 'hadz']

str.split ()方法使用定界符将字符串拆分为子字符串列表。

该方法采用以下 2 个参数:

姓名 描述
分隔器 在每次出现分隔符时将字符串拆分为子字符串
最大分裂 最多maxsplit完成拆分(可选)

如果您需要消除错误并且无法删除对的调用,split()您可以在调用之前将整数转换为字符串split()

主程序
example = 123 print(str(example).split(',')) # 👉️ ['123']

如果在字符串中找不到分隔符,则返回仅包含 1 个元素的列表。

您还可以将调用返回整数的函数的结果分配给变量。

主程序
def get_string(): return 100 my_string = get_string() # ⛔️ AttributeError: 'int' object has no attribute 'split' print(my_string.split(','))

变量my_string被分配给调用函数的结果get_string

该函数返回一个整数,因此我们无法调用split()它。

要解决该错误,您必须找到为特定变量分配整数而不是字符串的位置并更正分配。

AttributeError: ‘int’ 对象没有属性 ‘encode’

Python“AttributeError: ‘int’ object has no attribute ‘encode’” 发生在我们encode()对整数调用该方法时。要解决该错误,请确保您调用的值encode是字符串类型。

attributeerror int 对象没有编码

下面是错误如何发生的示例。

主程序
my_str = 'hello world' my_str = 123 # ⛔️ AttributeError: 'int' object has no attribute 'encode' print(my_str.encode('utf-8'))

我们将my_str变量重新分配给一个整数,并尝试调用
encode()导致错误的整数的方法。

如果您print()调用的是值encode(),它将是一个整数。

要解决该错误,您需要查明在代码中将值设置为整数的确切位置并更正分配。

要解决示例中的错误,我们必须删除重新分配或更正它。

主程序
my_str = 'hello world' print(my_str.encode('utf-8')) # 👉️ b'hello world'

如果您尝试将数字的编码版本作为字节对象获取,请在调用之前将整数转换为字符串encode()

主程序
my_num = 1234 result = str(my_num).encode('utf-8') print(result) # 👉️ b'1234'

str.encode方法将字符串编码版本作为字节对象返回。默认编码是
utf-8.

您还可以将调用返回整数的函数的结果分配给变量。

主程序
def get_string(): return 100 my_string = get_string() # ⛔️ AttributeError: 'int' object has no attribute 'encode' print(my_string.encode('utf-8'))

变量my_string被分配给调用函数的结果get_string

该函数返回一个整数,因此我们无法调用encode()它。

要解决该错误,您必须找到为特定变量分配整数而不是字符串的位置并更正分配。