相信结合前面函数的学习,小伙伴们可以轻松应用函数了。所以,结合我们最近写的类,想看看有没有人知道type()函数是怎么创建类的?当然,我们之前讲过的功能种类很多,大家可能对这个功能没有印象,不用太过担心。接下来小编就来给大家讲解一下。
当我们使用 class 来定义一个类时,Python 解释器只是扫描定义的语法,然后调用 type() 函数来创建类类。那么为什么要采用这种方法呢?我们先来看一个例子:
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()
功能一点都不优雅,似乎缺乏完整性,代码不好读,写起来也很繁琐。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 三种快速获取Python判断回文数的方法08/28
- ♥ 如何在python中编写不重复的随机数09/12
- ♥ 在 Python 中给我一面旗帜12/01
- ♥ 如何使用python的dir()函数11/30
- ♥ r在python中代表什么09/10
- ♥ 如何使用python的格式08/20
内容反馈