zoukankan      html  css  js  c++  java
  • python自动生成bean类

    近期在学习python,一直在和java做对比,目前没有发现有通过字段自动生成getter setter方法,故此自己写了一个类,可以通过__init__方法传入类名和字段数组,再调用内部的方法,就可以自动生成一个bean类,代码如下:

    代码很简单,但还有许多可以完善的地方,比较空格符,参数是否为保留字,append方法中通过+号连接的字符串等,有强迫症的码友可以加以完善。

    class ConvertBean:
    def __init__(self, className, parameters):
    self.__className = className
    self.__parameters = parameters

    def convert(self):
    classStr = "class {0}: def __init__(self,{1}): {2} {3} {4}"
    propertyStr = "@property"
    setterStr = ".setter"
    initParms = []
    initParmsAss = []
    initParmsGetter = []
    initParmsSetter = []
    size = len(self.__parameters)
    for i in range(size):
    __parm = self.__parameters[i]
    initParms.append(__parm)
    initParmsAss.append(" self.__" + __parm + " = " + __parm)
    initParmsGetter.append(
    " " + propertyStr + " def " + __parm + "(self): return self.__" + __parm + " ")
    initParmsSetter.append(
    " @" + __parm + setterStr + " def " + __parm + "(self, " + __parm + "): self.__" + __parm + " = " + __parm + " ")
    __initParmsForInitParms = ",".join(initParms) # 填充构造函数参数
    __initParmsForAssignment = " ".join(initParmsAss) # 参数赋值
    __initParmsForGetter = " ".join(initParmsGetter) # 生成getter
    __initParmsForSetter = " ".join(initParmsSetter) # 生成setter

    print(classStr.format(self.__className, __initParmsForInitParms, __initParmsForAssignment, __initParmsForGetter,
    __initParmsForSetter))


    bean = ConvertBean("Student", ["name", "age", "phone"])
    bean.convert()



  • 相关阅读:
    Html5新特性之文档声明和头部信息
    HTML,CSS,font-family:中文字体的英文名称 (宋体 微软雅黑)
    转:如何进行软件架构设计?
    sql2008,sa不能使用:不能为主体 sa 中设置凭据
    用VS2012不能打开VS2010的项目
    解决sourcesafe admin用户自动登录并且不用密码的问题
    WIN7隐藏GUEST登录账户
    人人刷人气
    python文件操作
    sigmoid belief network boltszmann machine
  • 原文地址:https://www.cnblogs.com/fanstatic/p/10741618.html
Copyright © 2011-2022 走看看