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

Python类内方法调用同类阶乘生成器报AttributeError如何解决

问题排查与解决

你看到的AttributeError: 'int' object has no attribute 'Factorial'是几个写法错误叠加触发的,逐个修正即可:

  • 触发当前报错的直接原因:调用实例方法的逻辑错误。你写的a.m(100)是直接用类名调用实例方法,Python会把你传入的整数100绑定到方法的self参数上,此时方法内的self是int类型的100,整数对象自然没有Factorial属性,直接抛出对应错误。
  • 后续会触发的第二个错误:类内部调用实例方法不需要手动传self。你写的self.Factorial(self)属于多余传参,Factorial方法定义时没有接收额外参数,修正调用方式为self.Factorial()即可。
  • 后续会触发的第三个错误:阶乘逻辑里的取值错误。Factorial方法里range(1, self)的写法是把类实例对象直接传给了range,range需要整数参数,这里应该取实例保存的阶乘上限属性self.n;另外range是左闭右开区间,要计算1到n的阶乘序列,右边界要写self.n + 1。
修正后完整可运行代码
class a:
    def __init__(self, n):
        self.n = n
    def Factorial(self):
        res = 1
        for i in range(1, self.n + 1):
            res *= i
            yield res
    def m(self):
        s = []
        for i in self.Factorial():
            s.append(i)
        return s

# 先初始化类实例传入参数n=100,再调用实例方法m
print(a(100).m())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:57:12