day 38
元类
什么是元类
用class
关键字定义的类本身是一个对象,负责产生该对象的类称之为元类(元类可以简称为类的类),内置的元类为type
元类的作用
元类可以帮我们控制类的创建
怎么自定义创建元类
- 自定义一个元类,继承
type
,派生出自己的属性与方法。 - 给需要使用的类,通过
metaclass
指定自定义的元类
# exec:三个参数
# 参数一:包含一系列python代码的字符串
# 参数二:全局作用域(字典形式),如果不指定,默认为globals()
# 参数三:局部作用域(字典形式),如果不指定,默认为locals()
# 可以把exec命令的执行当成是一个函数的执行,会将执行期间产生的名字存放于局部名称空间中
g = {
'x':1,
'y':2
}
l={}
exec{'''
global x,z
x = 100
z = 200
''',g,l}
print(g) # {'x': 100, 'y': 2, 'z': 200......}
print(l) # {'m': 300}