😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 🤓 同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章。
上次有粉丝私信问了我一个bug:TypeError: ‘int’ object is not callable如何解决,我们先来看看他的报错代码。
源代码:
class User():
def __init__(self,name,age,number):
self.name = name
self.age = age
self.custom = number
def custom(self):
print('the number of custom is '+str(self.custom))
u = User('reborn',18,19)
u.custom()
他的报错如下:
D:\>python test.py
Traceback (most recent call last):
File "test.py", line 11, in <module>
u.custom()
TypeError: 'int' object is not callable
其实这个问题,很简单,就是函数名和变量名重复了,当这两个名称重复时,程序会默认调用Int型对象,但Int对象没有什么调用可言,就爆出了这个错误,解决方法也很简单,要么更改变量名,要么更改方法名。
然后我搜集了一些常见的其他错误情况~
错误示例:
def print_hello():
print("Hello, World!")
print_hello = 42 # 将print_hello变量赋值为整数42,覆盖了函数定义
print_hello() # 尝试调用print_hello,但此时它是一个整数,引发TypeError
错误示例:
result = 10 / 2
result() # 尝试调用result变量,但此时它是一个整数,引发TypeError
错误示例:
my_list = [1, 2, 3]
index = 1
my_list(index) # 错误地尝试调用索引值,应该使用my_list[index]
错误示例:
str("Hello")() # 尝试调用字符串对象,引发TypeError
比如:使用正确的索引访问列表或元组元素
解决方案:
my_list = [1, 2, 3]
index = 1
print(my_list[index]) # 正确使用索引访问列表元素
正确使用内置函数或方法,解决方案:
greeting = str("Hello") # 正确地将字符串转换为str对象
print(greeting) #
正确理解变量存储的数据类型,解决方案:
result = 10 / 2
print(result) # 正确打印result变量的值