需要通过迭代excel文件来创建许多python对象

需要通过迭代excel文件来创建许多python对象,python,excel,oop,openpyxl,Python,Excel,Oop,Openpyxl,所以我创建了一个类 class Dept_member: quarterly_budget = 0 outside_services = 0 regular_count = 0 contractor_count = 0 gds_function = '' dept_name = '' def __init__(self, quarterly_budget, outside_services, dept_name): sel

所以我创建了一个类

class Dept_member:
    quarterly_budget = 0
    outside_services = 0
    regular_count = 0
    contractor_count = 0
    gds_function = ''
    dept_name = ''

    def __init__(self, quarterly_budget, outside_services, dept_name):
        self.quarterly_budget = quarterly_budget
        self.outside_services = outside_services
        self.dept_name = dept_name


    def regular_cost(self):
        print "%s" % str((self.quarterly_budget - self.outside_services) / self.regular_count)

    def contractor_cost(self):
        print "%s" % str(self.outside_services / self.contractor_count)
现在,我想使用迭代excel文件时收集的变量,使用上面详述的类为每一行创建对象

for row in range(6,d_sh.get_highest_row()):
    if f_sh.cell(row=row, column=2).value:
        deptno = f_sh.cell(row=row, column=2).value
        q_budget = f_sh.cell(row=row, column=17).value #Q3 Actual
        os_budget = f_sh.cell(row=row, column=14).value
        deptnode = f_sh.cell(row=row, column=1).value
        chop = deptnode.split(" ")
        deptname = " ".join(chop[1:])
        Dept = "gds_"+str(deptno)   ### This is what I want my new object to be called! 
        Dept = Dept_member(q_budget, os_budget, deptname)
下面是运行此操作后空闲交互会话的一些输出

>>> 
>>> deptno
u'180024446'
>>> q_budget
59412.00978792818
>>> os_budget
9973.898858075034
>>> deptnode
u'M180024446 GDS Common HW FEP China'
>>> deptname
u'GDS Common HW FEP China'
>>> Dept
<__main__.Dept_member instance at 0x126c32050>
>>> Dept.quarterly_budget
59412.00978792818
>
>>>德普诺
u'180024446'
>>>q_预算
59412.00978792818
>>>预算
9973.898858075034
>>>deptnode
u'M180024446 GDS通用硬件FEP中国'
>>>部门名称
u'GDS通用硬件FEP中国'
>>>系
>>>部门季度预算
59412.00978792818
我真正想要的是一个名为gds_180024446的对象,但它改变了变量


是否可以使用循环中的变量创建一组对象

我认为您需要像这样使用eval函数

eval("gds_" + str(deptno) + " = Dept_member(q_budget, os_budget, deptname)")

您可能应该使用python字典(),而不是使用
eval
函数创建一堆变量:

Dept["gds_"+str(deptno)] = Dept_member(q_budget, os_budget, deptname)
之后,您可以使用以下工具从字典中提取对象:

Dept['gds_180024446']

这很有效。。。非常感谢。我刚刚爱上了python,它再次成为了一个社区。