class Mymeta(type):
def __init__(self, class_name, class_bases, class_dic):
if not class_name.istitle():
raise TypeError('首字母必须大写')
if '__doc__' not in class_dic or not class_dic['__doc__'].strip():
raise TypeError('必须写注释且不能为空!')
print(class_name)
print(class_bases)
print(class_dic)
super(Mymeta, self).__init__(class_name, class_bases, class_dic)
print(self)
class Chinese(object, metaclass=Mymeta):
'''默认metaclass = type 这里我们让它继承自己定义的元类metaclass = Mymeta
里我们只要定义类'Chinese'就会触发自定义元类Mymeta的执行
所有自定义元类里面必须有__init__方法, 同时我们也可以对类名的大小写和类的名称空间的文档注释进行控制是否有写入
'''
country = 'china'
def __init__(self, name, age):
self.name = name
self.age = age
def talk(self):
print('老王的媳妇出轨啦!')