迭代对象列表以分配类属性

时间:2017-01-20 01:58:34

标签: python list class loops

这是我正在处理的日志解析器的一段代码片段。日志解析器用于刀片服务器机箱,并包含多个刀片服务器。

我在blade_populate()中的for循环中收到以下错误:

  

"期望的类型积分没有"

通过此对象列表进行迭代的正确方法是什么,以便我以后可以让Python开始填充固件,例如iDRAC?

def blade_create():
    blades= []
    for servers in range(blade_count()):
        blades.append(servers)
        return blades

blades = blade_create()

# Parse log to obtain FW revisions for blades

def blade_populate():

    for blade in range(blades):
        drac = log.readline()

1 个答案:

答案 0 :(得分:0)

看起来你有一个indnetation错误。函数中的return语句位于循环内。这意味着它在循环运行第一次迭代时被击中,或者如果循环根本没有运行(因为范围是空的),它根本不是return(在Python中相当于做return None)。

要解决此问题,请将return语句取消一级:

def blade_create():
    blades= []
    for servers in range(blade_count()):
        blades.append(servers)
    return blades                              # unindent here!

blades = blade_create()

# Parse log to obtain FW revisions for blades

def blade_populate():
    for blade in blades:     # this line shouldn't use range if blades is a list
        drac = log.readline()

但是我注意到你的blade_create()函数等同于range(blade_count())(如果需要稍后修改结果,可能会list(...)包围它)。可能你根本不需要单独的功能。