Python类方法调用报错:TypeError: 'write_from_excel'对象无法转为整数
解决TypeError: 'write_from_excel' object cannot be interpreted as an integer的问题
嘿,这个问题我一眼就看出来啦!你的报错根源在于实例方法缺少了必需的self参数,我来给你拆解清楚:
错误原因分析
你定义的randomString方法没有把self作为第一个参数。当你通过实例s = write_to_excel()调用s.randomString()时,Python会自动把实例对象s作为第一个参数传递给这个方法,但你的方法定义里第一个参数是stringLength=10——这就导致stringLength接收到的是write_to_excel的实例对象,而不是整数。后续代码里range(stringLength)需要整数参数,自然就抛出了类型错误。
另外给你提个小优化建议:你类里的wb和sheet1是类属性,所有实例会共享同一个工作簿,这大概率不是你想要的效果,最好把它们移到__init__方法里变成实例属性。
修复后的代码
from xlwt import Workbook import random import string class write_to_excel(): def __init__(self): # 把工作簿和工作表移到__init__,每个实例拥有独立的对象 self.wb = Workbook() self.sheet1 = self.wb.add_sheet('Sheet 1') # 给实例方法添加self参数 def randomString(self, stringLength=10): """Generate a random string of fixed length """ letters = string.ascii_lowercase return ''.join(random.choice(letters) for i in range(stringLength)) s = write_to_excel() r = s.randomString() print(r)
修复说明
- 给
randomString方法加上self作为第一个参数,让Python能正确传递实例对象,stringLength参数就能正常接收整数(默认值10或你传入的自定义值)。 - 将
wb和sheet1移到__init__方法中,确保每个write_to_excel实例都有自己独立的工作簿和工作表,避免多实例共享数据的潜在问题。
现在运行代码就能正常生成随机字符串啦!
内容的提问来源于stack exchange,提问作者vignesh shrinivasan
相关产品推荐
相关产品推荐

