保证用户设计的类必须有文档注释,不能为空 ,同时要求在一个类内部定义的所有函数必须有文档注释,不能为空。
class MyMetaClass(type):def __new__(cls, cls_name, cls_bases, cls_dict):print(cls) #注意:<class '__main__.MyMetaClass'>if '__doc__' not in cls_dict or len(cls_dict['__doc__'].strip()) == 0:raise TypeError('类:%s 必须有文档注释,并且注释不能为空.' % cls_name)for key, value in cls_dict.items():if key.startswith('__'):continueif not callable(value):continueif not value.__doc__ or len(value.__doc__.strip()) == 0:raise TypeError('函数:%s 必须有文档注释,并且文档注释不能为空.' % (key))obj = super().__new__(cls,cls_name,cls_bases,cls_dict)print(obj) #<class '__main__.Person'> 创建出来的就是Person类,是我们需要的.return obj
class Person(object,metaclass=MyMetaClass): #这一行: Person = MyMetaClass('Person',(object,),{...})"""元类."""country = 'China'def __init__(self,name,age):self.name = nameself.age = agedef tell_info(self):"""绑定方法."""print('%s 的年龄是:%s'%(self.name,self.age))
