还在为接口脚本规范烦恼么?
比如:
类名定义不规范!
定义的类缺少注释!
函数名不规范!
定义的函数缺少注释!
而这些,都会大大降低脚本的可读性以及可维护性。
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。
============================= 提升自己 ==========================
、声明:如有侵权,请联系删除。
============================= 升职加薪 ==========================