将类中所有实例变量转换为列表的快速方法(Python)

时间:2019-03-07 14:18:41

标签: python arrays list variables

我创建了一个带有约100多个实例变量的类(因为它将在函数中用于执行其他操作)。

是否有一种方法可以转换所有实例变量;进入数组列表。无需手动附加每个实例变量。

例如:

class CreateHouse(object):
    self.name = "Foobar"
    self.title = "FooBarTest"
    self.value = "FooBarValue"
    # ...
    # ...
    # (100 more instance variables) 

是否可以将所有这些项目追加到列表中? 快于:

theList = []

theList.append(self.name)
theList.append(self.title)
theList.append(self.value)
# ... (x100 elements)

该列表将用于执行另一个类/方法中的另一个任务。

1 个答案:

答案 0 :(得分:0)

唯一的解决方案(无需完全重新考虑您的整个设计-可以考虑使用FWIW,请参阅我对您的问题的评论)是具有属性名称的列表(按照您希望它们在最终列表中的顺序) )并使用getattr

class MonstruousGodClass(object):
    _fields_list = ["name", "title", "value", ] #etc...

    def as_list(self):
        return [getattr(self, fieldname) for fieldname in self._fields_list]

现在,正如我在评论中提到的那样,list在这里不是正确的数据类型(至少从语义POV),因此您可能想使用dict来代替-这使得代码简单得多:

    import copy 

    def as_dict(self):
        # we return a deepcopy to avoid unexpected side-effects
        return copy.deepcopy(self.__dict__) 
相关问题