可变自动分配和递增

问题描述 投票:0回答:1

我正在创建一个接收2个文本文件的小程序。每个文件都包含有关对象或人的信息。每个对象总是有8个项目,每个人总是有7个项目。我设法将这些信息自动放置在列表中,而不考虑文本文件可能显示的对象或人数。因此,我获得了两个主要清单。我们称其为“ D”和“ C”。每个列表都有几个列表,其中包含对象或人的相应信息。

示例:

D = [[att1, att2, att3, att4, att5, att6, att7, att8], [object 2], ..., [n-object]]

c = [[att1, att2, att3, att4, att5, att6, att7], [person 2], ..., [n-person]]

当我使用对象时,我创建了两个不同的类,一个用于处理每个列表。构造函数方法接收每个人或对象的属性。

示例:

class DDD(object):
     def __init__(self, att1, att2, att3, att4, att5, att6, att7, att8):
          self._att1 = att1
          self._att2 = att2
          etc etc etc etc

其他班级也一样。

这是我遇到问题的地方。如何为每个对象自动创建实例?困难在于变量的分配。您当然可以创建“ for循环”,并考虑“ len(D)”或“ len(C)”来创建实例。我可以通过索引调用构造函数方法的参数。

喜欢:

for i in D:
     X1 = classD(i[0], i[1], i[2], etc etc)
     ......

我如何自动使变量(X2,X3,X4,Xn)递增以进行分配?

python class variables variable-assignment
1个回答
0
投票

问问题时请格式化您的代码。

是否适合创建对象并将它们放在列表中?

尝试这样的事情:

class DDD(object): 
    def init(self, att1, att2, att3, att4, att5, att6, att7, att8): 
        self._att1 = att1
        self._att2 = att2
        ...

people = []
for person in D:
    x = DDD(person[0], person[1], ...)
    people.append(x)

这样,您将最终获得基于D中数据的DDD对象列表。

如果那是您想要的,那么上面的代码最好写成:

from dataclasses import dataclass

@dataclass
class Person:
    attr1: int
    attr2: str
    ...

people = [Person(*person) for person in D]

我利用列表推导和数据类将其写得更好。

© www.soinside.com 2019 - 2024. All rights reserved.