码迷,mamicode.com
首页 > 其他好文 > 详细

通过元类来控制类的产生

时间:2019-09-03 16:37:42      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:name   ISE   acl   父类   cep   元类   分数   定义   开头   

通过元类来控制类的产生

自定义元素:来控制类的产生,可以控制类名,可以控制类的继承父类,控制类的名称空间

自定义元类必须继承type,写一个类继承type 这种类都叫元类

class Mymeta(type):
    # def __init__(self,*args,**kwargs):
    def __init__(self,name,bases,dic):
        # self 就是Person类
        print(name)
        print(bases)
        print(dic)
        #练习一:加限制 控制类名必须以sb开头
        if not name.startswith('sb'):
            raise Exception('类名没有以sb开头')
        #练习二:类必须加注释
        print(self.__dict__['__doc__'])
# #metaclass=Mymeta  指定这个类生成的时候,用自己写的Mymeta这个元类
class Person(object,metaclass=Mymeta):
    '''
    注释
    '''
    school='oldboy'
    def __init__(self,name):
        self.name=name
    def score(self):
        print('分数是100')


p=Person()

class Mymeta(type):
    def __init__(self,name,bases,dic):
        print(self.__dict__['__doc__'])
        doc=self.__dict__['__doc__']
        if not doc:
            #没有加注释
            raise Exception('你的类没有加注释')
class Person(object,metaclass=Mymeta):
    '''
    我加了注释
    '''
    school='oldboy'
    def __init__(self,name):
        self.name=name
    def score(self):
        print('分数是100')

通过元类来控制类的产生

标签:name   ISE   acl   父类   cep   元类   分数   定义   开头   

原文地址:https://www.cnblogs.com/aden668/p/11453555.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!