美文网首页Python学习
python中自定义元类控制类的创建

python中自定义元类控制类的创建

作者: wangcc_sd | 来源:发表于2019-03-08 17:31 被阅读0次
    自定义元类控制类
    # -*-coding:utf-8 -*-
    # BY WANGCC
    
    class Mymeta(type):
        def __init__(self,class_name,class_bases,class_dir):
            if not class_name.istitle():
                raise TypeError('类名必须大写')
            if '__doc__' not in class_dir or not class_dir['__doc__'].strip():
                raise TypeError('必须有注释,且注释不能为空')
            print('class_name',class_name)
            print('class_bases',class_bases)
            print('class_dir',class_dir)
    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("%s is talking "%self.name )
    
    obj=Chinese('egon',age=18,)
    print(obj.__dict__)
    

    ps:感觉这个和装饰器有些类似,周末需要在学习一下这个。

    相关文章

      网友评论

        本文标题:python中自定义元类控制类的创建

        本文链接:https://www.haomeiwen.com/subject/uaqdpqtx.html