1

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

有没有比以下更简单的方法?

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]

其余课程省略

4

3 回答 3

6

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

def get_attrs_dict(self):
    return self.__dict__

如果您只想要值列表:

def get_attrs_list(self):
    return self.__dict__.values()
于 2013-04-25T20:51:57.433 回答
5

这是一种方法,通过getattr()

def getList(self):
    attributes = 'time definition name source'.split()
    return [getattr(self, attribute) for attribute in attributes]

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

于 2013-04-25T20:51:47.773 回答
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)。

于 2013-04-25T21:29:31.280 回答