欢迎来到赛兔子家园

Python type()函数:动态创建类

我们知道,type() 函数属于 Python 内置函数,通常用来查看某个变量的具体类型。其实,type() 函数还有一个更高级的用法,即创建一个自定义类型(也就是创建一个类)。
type() 函数的语法格式有 2 种,分别如下:
type(obj) 
type(name, bases, dict)

以上这 2 种语法格式,各参数的含义及功能分别是:
1、第一种语法格式用来查看某个变量(类对象)的具体类型,obj 表示某个变量或者类对象。
2、第二种语法格式用来创建类,其中 name 表示类的名称;bases 表示一个元组,其中存储的是该类的父类;dict 表示一个字典,用于表示类内定义的属性或者方法。

对于使用 type() 函数查看某个变量或类对象的类型,由于很简单,这里不再做过多解释,直接给出一个样例:

print(type(3.4))
class PLanguage:
    pass

obj = PLanguage()
print(type(obj))

运行结果:

<class 'float'>
<class '__main__.PLanguage'>

这里重点介绍 type() 函数的另一种用法,即创建一个新类,先来分析一个样例:

def say(self):
    print("我要学Python")

# 使用type()函数创建类
PLanguage = type("PLanguage", (object,), dict(say=say, name="赛兔子"))
# 创建一个PLanguage实例对象
pl_obj = PLanguage()
# 调用say()方法和name属性
pl_obj.say()
print(pl_obj.name)

可以看到,此程序中通过 type() 创建了类,其类名为 PLanguage,继承自 objects 类,且该类中还包含一个 say() 方法和一个 name 属性。

运行结果:

我要学Python
赛兔子

可以看到,使用 type() 函数创建的类,和直接使用 class 定义的类并无差别。事实上,我们在使用 class 定义类时,Python 解释器底层依然是用 type() 来创建这个类。

posted on 2024-09-03 14:44  赛兔子  阅读(58)  评论(0)    收藏  举报

导航