作者:万百入年许老
来源:SegmentFault 社区
场景
需要从Excel中加载到内存中,转换为class对象执行操作
环境
- Python3.8
- openpyxl==3.0.5
前置知识
反射(仅介绍这个帮助类用到的几个反射方法)
setattr、getattr
class Person():
name = None
def __init__(self, name):
self.name = name
p = Person("laowang")
n = getattr(p, "name")
print(n)
# 打印结果:laowang
setattr(p, "name", "laoxu")
n2 = getattr(p, "name")
print(n2)
# 打印结果:laoxu
反射实例化对象
class Person(): name = None def print_sth(self): print("测试实例化方法", self.name)def test(clazz): """ 实例化对象 :param clazz: 要实例化的类型 """ x = clazz() setattr(x, "name", "老王") x.print_sth() # 打印:测试实例化方法 老王test(Person)
Excel操作类库 - openpyxl
创建Excel
from openpyxl import Workbook
wb = Workbook()
ws1 = wb.active
ws1.append(['name', 'age', 'isManager', 'remark'])
ws1.append(['', '', '', ' '])
ws1.append(['老王', '18', 'false', ' '])
ws1.append(['laoxu', '28.4', 'TRUE', 'zaoricaifuziyou'])<