自定义一个元类Mymeta,让定义类Chinese的时候,触发自定义元类Mymeta的执行。
比如:控制Chinese类的首字母必须大写,或者类必须有注释。
class Mymeta(type):
def __init__(self,class_name,class_bases,class_dic):
#在super前,这段时间里,控制声明类的一些行为。
if not class_name.istitle():
raise TypeError('类名的首字母必须大写')
if '__doc__' not in class_dic or not class_dic['__doc__'].strip():
raise TypeError('必须有注释,且注释不能为空')
super(Mymeta,self).__init__(class_name,class_bases,class_dic) #继续执行Chinese类的其他内容
class Chinese(object,metaclass=Mymeta):
'''
中文人的类
'''
country='China'
def __init__(self,namem,age):
self.name=namem
self.age=age
def talk(self):
print('%s is talking' %self.name)
# Chinese=Mymeta(class_name,class_bases,class_dic) 定义类的时候,相当于执行这条语句。