目录
第十三章、元类(metaclass)
一、什么是元类
在python中一切皆对象,那么我们用class关键字定义的类本身也是一个对象,负责产生该对象的类称之为元类,即元类可以简称为类的类
class Foo: # Foo=元类() pass
二、为什么用元类
元类是负责产生类的,所以我们学习元类或者自定义元类的目的:是为了控制类的产生过程,还可以控制对象的产生过程
本质:
exec()
l={}exec('''school='oldboy'def __init__(self,name): self.name=namedef score(self): print('分数是100')''',{},l)def __init__(self,name): self.name=namePerson=type('Person',(object,),{'school':'oldboy','__init__':__init__})#class 底层就是调用type来实例化产生类(对象)
补充#exec() eval()的区别
f = "3+6+9+8"s = eval(f)print(s)--------------------------26
code = '''def func(): print('test') return 555func()'''f = exec(code)print('---'*5)print(f)-------------------------------test---------------None