需要通过迭代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,它再次成为了一个社区。