我创建了一个带有约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)
该列表将用于执行另一个类/方法中的另一个任务。
答案 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__)