需要通过迭代excel-fi创建许多python对象

2024-04-20 06:44:58 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我创建了一个类。。。在

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文件时收集的变量,使用上面详述的类为每一行创建对象。在

^{pr2}$

下面是一个空闲的交互式会话运行后的一些输出。在

>>> 
>>> 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

我真正想要的是一个名为gds_的对象,但是它改变了变量。在

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


Tags: nameselfdefcountservicememberbudgetgds
2条回答

我想你需要使用eval函数,比如

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

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

Dept["gds_"+str(deptno)] = Dept_member(q_budget, os_budget, deptname)

之后,您可以使用以下命令从字典中获取对象:

^{pr2}$

相关问题 更多 >