当前位置: 首页 > 图灵资讯 > 行业资讯> type()函数如何创建python3中的类?

type()函数如何创建python3中的类?

来源:图灵python
时间: 2024-11-17 17:05:08

相信结合之前函数的学习,小伙伴们对于函数的应用可以得心应手了。那么,结合我们最近所写的类,小编想看看有没有小伙伴知道type()函数是如何创建类的?当然了,我们之前讲的函数种类繁多,大家不一定对这个函数有印象,这点大家也不用太着急。小编接下来为大家进行讲解。

当我们使用class定义类的时候,Python解释器仅仅是扫描一下定义的语法,然后调用type()函数创建class类。那为什么采取这种方式呢?先看一个例子:

classA(object):
#类属性
role='student'

#实例方法
def__init__(self,name):
#实例属性
self.name=name

#类方法
@classmethod
defstudy(cls):
pass

#静态方法
@staticmethod
defcal_student_num():
Pass

上面我们使用class定义了A类对象,其中包含了类属性、类方法、实例属性、实例方法、静态方法。如果我们使用type()函数,如何创建呢?

#使用type()函数定义类
#实例方法
def__init__(self,name):
#实例属性
self.name=name


#类方法
@classmethod
defstudy(cls):
pass


#静态方法
@staticmethod
defcal_student_num():
pass


#元类作用不在于创建一个新的类
A=type(
'A',
(object,),
{
'role':'student',
'__init__':__init__,
'study':study,
'cal_student_num':cal_student_num
})

仔细观察,使用type()函数创建class类的时候,只是将定义在class类内部的代码拿出来,放在外面,然后向type()函数传入三个参数namebasesdictname字符串类型,代表类名,比如例子中的"A"bases元组类型,代表基类(或父类),即需要继承的类对象;dict字典类型,将定义的类属性、类方法、实例方法等,以键值对的形式建立映射关系。

当我们使用class定义对象的时候,解释器内部会帮我们调用type()函数,完成创建对象工作。为什么平时我们定义对象大多是采用class,而不采用type()函数呢?因为type()函数一点都不优美,看上去缺少整体性,代码不易读,写起来也很麻烦。