还在为接口脚本规范烦恼么?
比如:
类名定义不规范!
定义的类缺少注释!
函数名不规范!
定义的函数缺少注释!
而这些,都会大大降低脚本的可读性以及可维护性。
ok,不管是写脚本的人忘了还是什么其它原因,我们可以通过元类来对脚本做出一些规范,代码如下:
import types class Mymeta(type): # 继承默认元类的一堆属性 def __init__(self,class_name,class_bases,class_dic): # 类名首字母必须大写 # if not class_name.istitle(): # 如果是ChinesePeople就不行 if not (ord(class_name[0]) >=65 and ord(class_name[0])<=90): # 只需要首字母在A-Z即可 raise TypeError('类名【%s】的首字母必须大写'%class_name) # 类必须要有非空注释 if '__doc__' not in class_dic or not class_dic['__doc__'].strip(): raise TypeError('必须有注释,且注释不能为空') # 类中方法必须要有非空注释 # print(class_dic) for k,v in class_dic.items(): # print(k, v) if isinstance(v, types.FunctionType): # print(v) f = getattr(self, k) if hasattr(f, '__doc__'): # print(c.__doc__) if not f.__doc__: raise TypeError('方法【%s】必须有注释,且注释不能为空'%k) super(Mymeta,self).__init__(class_name,class_bases,class_dic) def __call__(self, *args, **kwargs): # 重写type类的__call__方法,obj=Chinese('jack',age=18) print(self) #self=Chinese print(args) #args=('jack',) print(kwargs) #kwargs={'age': 18} class Chinese(object,metaclass=Mymeta): ''' 中文人的类 ''' country='China' def __init__(self,namem,age): '''123''' self.name=namem self.age=age def talk(self): """talk方法""" print('%s is talking' %self.name) Chinese('jack',age=18) # Chinese.__call__(Chinese,'jack',18)
是不是so easy呢?确实很easy。