目录
AttributeError: ‘int’ object has no attribute ‘X’ (Python)
- AttributeError: ‘int’ 对象没有属性 ‘X’ (Python)
- AttributeError: ‘int’ 对象没有属性 ‘append’
- AttributeError: ‘int’ 对象没有属性 ‘split’
- AttributeError: ‘int’ 对象没有属性 ‘encode’
AttributeError: ‘int’ 对象没有属性 ‘X’ (Python)
当我们尝试访问整数上不存在的属性时,会出现 Python“AttributeError: ‘int’ object has no attribute”。
要解决该错误,请在访问属性之前确保该值属于预期类型。
下面是错误如何发生的示例。
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())
要解决此错误,请在调用该方法之前将值转换为字符串
str.isdigit()
。
my_num = '123' print(str(my_num).isdigit()) # 👉️ True
如果字符串中的所有字符都是数字并且至少有 1 个字符,则str.isdigit方法返回
,否则返回。True
False
错误地将变量重新分配给整数
最常见的错误是由代码中某处将变量重新分配给整数引起的。
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()
函数返回,否则返回。True
False
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()
函数,它会返回该类属性的名称列表,并递归地返回其基类的属性。
要解决此错误,请在访问属性之前将值转换为正确的类型,或者在访问任何属性之前更正分配给变量的值的类型。
目录
- AttributeError: ‘int’ 对象没有属性 ‘append’
- AttributeError: ‘int’ 对象没有属性 ‘split’
- AttributeError: ‘int’ 对象没有属性 ‘encode’
AttributeError: ‘int’ 对象没有属性 ‘append’
Python“AttributeError: ‘int’ object has no attribute ‘append’” 发生在我们append()
对整数调用该方法时。
要解决该错误,请确保您调用的值的append
类型为
list
。
下面是错误如何发生的示例。
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
变量存储一个数字列表。
0
(它是整数),并对导致错误的结果调用了方法。 1
append()
要解决此场景中的错误,请删除索引访问器并调用
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()
它。
要解决该错误,您必须找到为特定变量分配整数而不是列表的位置并更正分配。
目录
AttributeError: ‘int’ 对象没有属性 ‘split’
Python“AttributeError: ‘int’ object has no attribute ‘split’” 发生在我们split()
对整数调用该方法时。
要解决该错误,请确保您调用的值的split
类型为
string
。
下面是错误如何发生的示例。
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
是字符串类型。
下面是错误如何发生的示例。
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()
它。
要解决该错误,您必须找到为特定变量分配整数而不是字符串的位置并更正分配。