type()函数如何创建python3中的类?
2023-03-20 15:36:19 时间
相信结合之前函数的学习,小伙伴们对于函数的应用可以得心应手了。那么,结合我们最近所写的类,小编想看看有没有小伙伴知道type()函数是如何创建类的?当然了,我们之前讲的函数种类繁多,大家不一定对这个函数有印象,这点大家也不用太着急。小编接下来为大家进行讲解。
当我们使用class定义类的时候,Python解释器仅仅是扫描一下定义的语法,然后调用type()函数创建class类。那为什么采取这种方式呢?先看一个例子:
class A(object): # 类属性 role = 'student' # 实例方法 def __init__(self, name): # 实例属性 self.name = name # 类方法 @classmethod def study(cls): pass # 静态方法 @staticmethod def cal_student_num(): Pass
上面我们使用class定义了A类对象,其中包含了类属性、类方法、实例属性、实例方法、静态方法。如果我们使用type()函数,如何创建呢?
# 使用type()函数定义类 # 实例方法 def __init__(self, name): # 实例属性 self.name = name # 类方法 @classmethod def study(cls): pass # 静态方法 @staticmethod def cal_student_num(): pass # 元类作用不在于创建一个新的类 A = type( 'A', (object,), { 'role': 'student', '__init__': __init__, 'study': study, 'cal_student_num': cal_student_num })
仔细观察,使用type()函数创建class类的时候,只是将定义在class类内部的代码拿出来,放在外面,然后向type()函数传入三个参数name,bases,dict。name字符串类型,代表类名,比如例子中的"A";bases元组类型,代表基类(或父类),即需要继承的类对象;dict字典类型,将定义的类属性、类方法、实例方法等,以键值对的形式建立映射关系。
当我们使用class定义对象的时候,解释器内部会帮我们调用type()函数,完成创建对象工作。为什么平时我们定义对象大多是采用class,而不采用type()函数呢?因为type()函数一点都不优美,看上去缺少整体性,代码不易读,写起来也很麻烦。
相关文章
- 美团二面:如何解决 Bin Log 与 Redo Log 的一致性问题
- 为什么执行 Alter 更新表要慎重?
- Oracle 12CR2 RAC 安装避坑宝典
- 万字长文记录Python读写EXCEL文件常用方法大全
- API 与 SDK:有什么区别?
- 为何还在浪费时间?Python与R语言的数据科学之争
- 详解汇编语言B和LDR指令与相对跳转和绝对跳转的关系
- 建议收藏,MyBatis插件原理详解
- 随便几张图让你彻底理解回调函数就是这么爽快,年轻人,耗子喂汁
- MyBatis原生批量插入的坑与解决方案!
- 前后端分离必备, Golang Gin中如何使用JWT(JsonWebToken)中间件?
- 前端进阶之认识与手写Compose方法
- Python入门要多长时间?要学什么?
- 2020年12月编程语言排行榜:Python年度编程语言预订?Java重回第二
- 2021年最热门的5种编程语言
- Python 和 MongoDB 其实很配
- 一文读懂一条查询语句的宿命
- 教你用Python自制拼图小游戏,轻松搞定熊孩子
- TIOBE12月榜单:Java重回第二,Python有望四连冠年度语言
- Python也能操作MongoDB数据库