You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)

修复说明

  1. 给randomString方法加上self作为第一个参数,让Python能正确传递实例对象,stringLength参数就能正常接收整数(默认值10或你传入的自定义值)。
  2. 将wb和sheet1移到__init__方法中,确保每个write_to_excel实例都有自己独立的工作簿和工作表,避免多实例共享数据的潜在问题。

现在运行代码就能正常生成随机字符串啦!

内容的提问来源于stack exchange,提问作者vignesh shrinivasan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:11:54