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。