三行代码  ›  专栏  ›  技术社区  ›  Roee

带类的机具生成器

  •  0
  • Roee  · 技术社区  · 3 月前

    我试图用类编写一个生成器,该类获取一个数字列表,对于每个数字,返回 true 如果此数的除数之和大于 false 如果没有。 sum_of_divisor_helper 是辅助函数。 很遗憾,我遇到了以下错误:

    回溯(最近一次调用last):文件“main.py”,第33行,in 对于数字中的i:文件“main.py”,第23行,in 下一个 if(sum\u of\u divisor\u helper(self.list1[self.x])==True):name错误:未定义name“sum\u of\u divisor\u helper”

    代码如下:

    class sum_of:
        
        def __init__(self,myList):
            self.x = 0
            self.list1 = myList
            
        def __iter__(self):
            return self
            
        def sum_of_divisor_helper(self):
            sum_of_divisors = 0
            for i in range(1, self.x):
                if self.x % i == 0:
                    sum_of_divisors = sum_of_divisors + i
                else:
                    pass
                if sum_of_divisors >= self.x:
                    return True
                else:
                    return False
            
        def __next__(self):
            if sum_of_divisor_helper(self.list1[self.x]) == True:
                return True
                self.x  = self.x + 1
            elif sum_of_divisor_helper(self.list1[self.x]) == False:
                return False
            else:
               raise StopIteration
    
    numbers = sum_of([12,20,10,30])
    for i in numbers:
        print(i)
    
    0 回复  |  直到 3 月前
        1
  •  1
  •   Nathaniel Ford    3 月前

    尝试

    self.sum_of_divisor_helper(self.list1[self.x])
    

    而不是

    sum_of_divisor_helper(self.list1[self.x])
    

    使用 self 引用类中的方法时使用前缀。