元类

'''
元类
'''

'''
产生类的类,叫元类
type是内置的一个元类,所有的类都是由type实例化得到
Person类也是个对象,那他一定是一个类实例化得到,这个类,就叫元类
一切皆对象:类实际上是一个一个对象
'''
class Person:
    def __init__(self,name):
        self.name=name
    def score(self):
        print('分数是100')
p=Person('nick')
'''
class 底层就是调用type来实例化产生类(对象)
'''
# 通过type来直接产生类,不用class关键字了
l={}
exec('''
school='oldboy'
def __init__(self,name):
    self.name=name
def score(self):
    print('分数是100')
''',{},l)
def __init__(self,name):
    self.name=name
'''
自定义元类,来控制类的产生:可控制类名,可以控制类的继承
父类,控制类的名称空间
自定义元类必须继承type,写一个类继承type,这种类都叫元类
'''
class Mymeta(type):
    def __init__(self,name,bases,dic):
        if not name.startswith('sb'):
            raise Exception('类名没有以sb开头')
        print(self.__dict__['__doc__'])
posted @ 2019-09-03 15:15  哥$  阅读(132)  评论(0编辑  收藏  举报