从对象元素返回列表?

时间:2013-04-25 20:44:38

标签: python object

我有一个已定义的对象(简化如下),并希望将一个元素作为列表返回。

是否有比下面更简单的方法?

class objectRecord(object):
    def __init__(self,fields):
        self.time=fields[0]
        self.definition=fields[1]
        self.name=fields[2]
        self.source=fields[3]
        self.size=fields[4]
        self.value=fields[5]
        self.increasedsize=fields[6]
        self.count=fields[7]

其余__init__省略

    def getList(self):
        return [self.name,self.definition,self.name,self.source,self.size,self.value,self.increasedsize,self.count]

其余课程省略

3 个答案:

答案 0 :(得分:6)

您可以获取包含所有对象属性的字典:

def get_attrs_dict(self):
    return self.__dict__

如果您只想要值列表:

def get_attrs_list(self):
    return self.__dict__.values()

答案 1 :(得分:5)

以下是通过getattr()

执行此操作的一种方法
def getList(self):
    attributes = 'time definition name source'.split()
    return [getattr(self, attribute) for attribute in attributes]

如果需要,您可以向列表中添加更多属性。

答案 2 :(得分:0)

作为马克评论的后续行动:看起来非常像你真正想要的是像这样写__init__

def __init__(self, fields):
    self.fields = fields # or maybe fields[:] if you need to make a copy
    self.definition, self.name, ... , self.count = self.fields

这是定义变量的更方便的方法,并提供了一种非常清晰的方式来访问所有值(通过self.fields)。