第十三章、元类(metaclass)
2024-09-05 09:51:18
第十三章、元类(metaclass)
一、什么是元类
在python中一切皆对象,那么我们用class关键字定义的类本身也是一个对象,负责产生该对象的类称之为元类,即元类可以简称为类的类
class Foo: # Foo=元类()
pass
二、为什么用元类
元类是负责产生类的,所以我们学习元类或者自定义元类的目的:是为了控制类的产生过程,还可以控制对象的产生过程
本质:
exec()
l={}
exec('''
school='oldboy'
def __init__(self,name):
self.name=name
def score(self):
print('分数是100')
''',{},l)
def __init__(self,name):
self.name=name Person=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 555
func()
''' f = exec(code)
print('---'*5)
print(f)
-------------------------------
test
---------------
None
最新文章
- js正则表达式校验非正整数:^((-\d+)|(0+))$
- 基于AWS的云服务架构最佳实践
- XE系列资源文件的奇怪问题
- git server服务器搭建
- iOS constraint被应用于view上的时间
- Java面向对象深度
- iOS之UIImagePickerController的应用
- 宏HASH_GET_FIRST
- C#对象赋值出现的诡异问题,或许你也遇到过,有待你的解决
- CentOS下安装两个或多个Tomcat7
- Linux学习笔记——如何使用共享库交叉编译
- spring.NET的依赖注入
- 365DirMon(文件夹监视专家) v2.8绿色免费版
- 基于jQuery表单快速录入数据功能
- Oracle官方文档学习路线图
- vue+原生JavaScript实现slideDown与slideUp[简单思路]
- SkylineGlobe 7.0.1 &; 7.0.2版本Web开发 如何实现土方量计算
- pandas常用函数之shift
- POJ-1679 The Unique MST (判断最小生成树的唯一性)
- MySQL内连接,左(外)连接,右(外)连接