python报TypeError: 'str' object is not callable错误的解决办法

该错误TypeError: ‘str’ object is not callable字面上意思:

就是str不可以被系统调用,其实原因就是:你正在调用一个不能被调用的变量或对象,具体表现就是你调用函数、变量的方式错误

所以,这个错误想表达的就是:str()是系统自带的,你不能在用它的时候自己同时定义一个别的叫做str的变量,这样会冲突.

出现这个情况错误一般是:
1.str变量重复定义
2.变量重复定义
3.函数或者字符串调用错误

例子1:str字符串重复定义

classmate = ['one', 'two', 'three']
	for str in classmate:
		print(s + ', ')
		print('\n')

str() 是一个builtin 函数,在这里将一个普通变量定义为str,编译器在之后的解释执行过程中,会一直把str作为一个普通变量处理,自然在希望调用str()的时候会出问题。
把这里的 str 改成 s 等其他变量,就能解决问题。

例子2:变量名重复定义

class Book:
    def __init__(self, price, color):
        self.price = price
        self.color = color # color发生冲突,导致出错
 
    def color(self):
        print('书的颜色是:%s'%self.color)
 
eng = Book(10, 100, 'red')
print('书的价格是:%d'%eng.price)
 
eng.color()

Traceback (most recent call last):
File “/home/albert/PycharmProjects/xi.py”, line 14, in
eng.color()
TypeError: ‘str’ object is not callable
书的价格是:100

所以,不能同时定义同一个名字叫color的,会冲突.改成color1即可!

例子三:函数或者字符串调用错误

def get_list_urls(self):
		for list in self.domainList:
			#print(self.domainList[list])
			url = self.domainList[list]
			reqs = requests.get(url = url, headers = self.headers)
			html = reqs.text()
			bfHtml = BeautifulSoup(html)

上例子也会报:‘str’ object is not callable

其原因是:requests的返回值reqs并没有text()方法,BeautifulSoup接收一个字符串,而我们误将 reqs.text 写成了 reqs.text(),就造成了这个错误。

  • 22
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值