我想使用迭代器来生成一个类的多个实例,但是我也希望能够为这个过程中创建的每个实例分配一个变量。有办法吗?下面是我当前的代码,结果是我可以打印我想要访问的数据,但是每次迭代时创建的对象都会被覆盖。理想情况下,我希望为迭代器生成的每个字典分配单独的变量,这样我就可以对它们应用额外的函数。因此,如果电子表格包含3行数据,我将有3个不同的layerObjects,而不是最后只有一个layerObjects。如果不预先定义将要创建的对象的数量,我似乎不知道如何做到这一点,但是我希望它保持足够的灵活性,以便它可以生成(和保存)与数据行一样多的对象。有办法吗
import openpyxl
layerFile = openpyxl.load_workbook('\xxx/xxx/xxx.xlsx')
layerSheet = layerFile.get_sheet_by_name('Sheet1')
class Layer:
def __init__(self, layerNumber):
#initialize list to hold layer data
self.layerData = []
self.keyFields = []
#read layer attribute data from excel file
for columns in range(1, layerSheet.get_highest_column()+1):
cellData = layerSheet.cell(row = layerNumber + 1, column = columns).value
cellFields = layerSheet.cell(row = 1, column = columns).value
self.layerData.extend([cellData])
self.keyFields.extend([cellFields])
#creates dictionary that contains layer information
def layerContainer(self):
self.layerContainer = dict(zip(self.keyFields, self.layerData))
return self.layerContainer
#reads the file for all layers in the excel file and creates
for rows in range(1, layerSheet.get_highest_row()+1):
layerObject = Layer(rows)
print(layerObject.layerContainer())
我认为您想要的是使用某种数据结构来存储创建的
Layer
对象,比如list
或dictionary
然后您可以稍后访问列表或字典(对其进行迭代)以获取层对象。示例-
然后要访问图层对象-
另外,理想情况下,您不应该使用与函数名相同的变量名,尤其是在类中,因为当您这样做时-
您正在用dict覆盖
layerContainer
函数,因此在调用此函数一次之后,就不能再作为函数访问layerContainer了相关问题 更多 >
编程相关推荐