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}:\n def __init__(self,{1}):\n{2}\n\n{3}\n{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 + "\n def " + __parm + "(self):\n return self.__" + __parm + "\n")
initParmsSetter.append(
" @" + __parm + setterStr + "\n def " + __parm + "(self, " + __parm + "):\n self.__" + __parm + " = " + __parm + "\n")
__initParmsForInitParms = ",".join(initParms) # 填充构造函数参数
__initParmsForAssignment = "\n".join(initParmsAss) # 参数赋值
__initParmsForGetter = "\n".join(initParmsGetter) # 生成getter
__initParmsForSetter = "\n".join(initParmsSetter) # 生成setter print(classStr.format(self.__className, __initParmsForInitParms, __initParmsForAssignment, __initParmsForGetter,
__initParmsForSetter)) bean = ConvertBean("Student", ["name", "age", "phone"])
bean.convert()
python自动生成bean类的更多相关文章
- 从用python自动生成.h的头文件集合和类声明集合到用python读写文件
最近在用python自动生成c++的类.因为这些类会根据需求不同产生不同的类,所以需要用python自动生成.由于会产生大量的类,而且这些类是变化的.所以如果是在某个.h中要用include来加载这些 ...
- Python自动生成代码工具
项目中有一个需求,对一个基类而言,拥有一个比较方法和拷贝方法,某些地方需要频繁地对这两个方法进行调用.对于所有子类而言,需要重写这两个方法,并在其中维护类内一些成员变量.例如有一个变量m_iMyVal ...
- (二十二)SpringBoot之使用mybatis generator自动生成bean、mapper、mapper xml
一.下载mybatis generator插件 二.生成generatorConfig.xml new一个generatorConfig.xml 三.修改generatorConfig.xml 里面的 ...
- 使用T4为数据库自动生成实体类
T4 (Text Template Transformation Toolkit) 是一个基于模板的代码生成器.使用T4你可以通过写一些ASP.NET-like模板,来生成C#, T-SQL, XML ...
- ANTLR和StringTemplate实例:自动生成单元测试类
ANTLR和StringTemplate实例:自动生成单元测试类 1. ANTLR语法 要想自动生成单元测试,首先第一步就是分析被测试类.这里以Java代码为例,用ANTLR对Java代码进行分析.要 ...
- Mybatis自动生成实体类
Maven自动生成实体类需要的jar包 一.pom.xml中 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns ...
- Springboot mybatis generate 自动生成实体类和Mapper
https://github.com/JasmineQian/SpringDemo_2019/tree/master/mybatis Springboot让java开发变得方便,Springboot中 ...
- 【原创】有关Silverlight中自动生成的类中 没有WCF层edmx模型新加入的对象 原因分析。
前端页面层: 编译老是不通过,报如下如所示错误: -- 然后下意识的查了下 生成的cs文件,没有搜到根据edmx 生成的 对应的类. 结果整理: 1.尽管在 edmx 模 ...
- Mybatis自动生成实体类、dao接口和mapping映射文件
由于Mybatis是一种半自动的ORM框架,它的工作主要是配置mapping映射文件,为了减少手动书写映射文件,可以利用mybatis生成器,自动生成实体类.dao接口以及它的映射文件,然后直接拷贝到 ...
随机推荐
- English trip V2 - 6 Sports Teacher:Taylor Key:phrasal verbs
In this lesson you will learn to talk about sports. 课上内容(Lesson) # How many different sports can you ...
- jsp页面输出当前时间
<% out.print(new java.text.SimpleDateFormat("yyyy年MM月dd号 hh:mm:ss").format(new Date())) ...
- thrift之php,python使用TServerSocket并发 处理请求
要求: 不适用nginx+fastcgi情况下,分布式系统之间如果通讯,如果不阻塞,能并发处理请求 环境: luman/laravel:5.5 php:7.2 thrift -version :Thr ...
- 关于leal和mov
最近在学习leal的时候遇到了一点非常迷惑的地方,就是leal是用来取有效地址的,但是为什么它也可以实现赋值呢?偶然发现一个博客讲的不错,遂自己记录一下 一个这样的例子 leal 7(%edx,%ed ...
- Linux下通过vi修改只读文件
打开一个只读文件 $ vi /etc/crontab 此时会进入crontab的编辑界面,通过按键 ESC 可以进入命令模式,按键 I 进入插入模式 但是!如果此时没有权限进行修改的话,虽然可以插入编 ...
- linux常用命令 sort排序命令
排序命令sort sort [选项] 文件名 选项 -f 忽略大小写 -n 以数值型进行排序,默认使用字符串型进行排序 -r 反向排序 -t 指定分割符,默认的分割符是制表符 -k n[,m] 安装自 ...
- 正则表达式,grep,sed,
答案详见:http://www.cnblogs.com/linhaifeng/p/6596660.html 作业一:整理正则表达式博客 ^ # 行首定位 $ # 行尾定位 . # 匹配除换行符以外的任 ...
- 使用labelme制作自己的数据集
# python3 conda create --name=labelme python=3.6 source activate labelme # conda install -c conda-fo ...
- h5或者微信端吊起app
[https://www.cnblogs.com/shadajin/p/5724117.html]! 魔窗sdk http://www.magicwindow.cn/doc/universal-lin ...
- leetcode python 037 求解数独
import numpy as npimport syssys.setrecursionlimit(1000) #例如这里设置为一百万 def get1(n): if n<3: ...