Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从对象元素返回列表?_Python_Object - Fatal编程技术网

Python 从对象元素返回列表?

Python 从对象元素返回列表?,python,object,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=field

我在下面定义了一个简化的对象,并希望以列表的形式返回一个元素

有没有比做下面的事情更简单的方法

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]
省略了uuu init的其余部分


省略了类的其余部分

这里有一种方法,通过getattr:


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

这里有一种方法,通过getattr:


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

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

def get_attrs_dict(self):
    return self.__dict__
如果您只需要值列表:

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

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

def get_attrs_dict(self):
    return self.__dict__
如果您只需要值列表:

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

作为马克评论的后续:它看起来非常像你真正想要的是像这样写你的初始化:

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访问所有值的非常清晰的方法。

作为Mark评论的后续:它看起来非常像您实际想要的是这样编写您的uu 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访问所有值的非常清晰的方法。

请记住,当您要求做一些更简单的事情时,您可能会遇到危险。您通常会得到一些代码行数较少,但也有点难以理解的东西。这让我想起了Brian Kernighan的一句话:调试的难度是编写代码的两倍。因此,如果您尽可能巧妙地编写代码,那么根据定义,您还不够聪明,无法调试它。此外,请记住Python之道:显式优于隐式。我建议你退后一步,看看是否有完全不同的方法。记住,当你要求做一些简单的事情时,你可能会遇到危险。您通常会得到一些代码行数较少,但也有点难以理解的东西。这让我想起了Brian Kernighan的一句话:调试的难度是编写代码的两倍。因此,如果您尽可能巧妙地编写代码,那么根据定义,您还不够聪明,无法调试它。此外,请记住Python之道:显式优于隐式。我建议退一步,看看是否有完全不同的方法。因此缺少init的一部分是字段的长度可能是x或x+1,这取决于调用对象的时间。因此,必须针对这种情况修改init。因此,缺少init的部分原因是字段的长度可能是x或x+1,具体取决于调用对象的时间。因此,必须针对这种情况修改init。