Python 使用元类 type 动态创建类详解

木白
木白
发布时间:2026-10-14| 7人浏览过
原创

本文介绍如何使用 Python 内置元类 type 动态创建类。通过 type(类名, 父类元组, 属性字典) 语法,可灵活定义类名、继承关系及方法属性。文章包含无属性、含方法属性及继承指定类三种案例,展示动态编程技巧。

前言:

在 Python 中,我们通常使用 class 关键字来定义类。但你是否思考过,类本身是由什么创建的呢?正如 python 所强调的“万物皆对象”,对象由类实例化而来,而类本身也可以被视为一种对象,它是由元类 type 所创建的。

1、type 动态创建类

1.1 语法格式

调用 type 函数,传入三个参数:类名、由父类名称组成的元组(若无父类可为空元组)、以及包含属性和方法名称及值的字典。

1.2 案例1:使用 type 创建类


Person = type("Person", (), {})
p = Person()
print(type(p))
print(Person.__name__)

运行结果如下:


<class '__main__.Person'>
Person


需要注意的是,在 type("Person", (), {}) 中,第一个参数 "Person" 可以替换为任意字符串作为类名。但此时打印类的名称时,输出将是你指定的那个字符串。


Person = type("Per", (), {})
p = Person()
print(Person.__name__)

输出结果示例:

Per

因此,为了使代码更具可读性和友好性,通常建议将变量名与设置的类名保持一致。

1.3 案例2:使用 type 创建带有属性(方法)的类


def show(self):
    print("展示自己")
Person = type("Person", (), {"age": 18, "name": "jkc", "show": show})
p = Person()
print(p.age)
print(p.name)
p.show()

运行结果如下:

18 jkc 展示自己

这里我们动态创建了一个父类为 Object 的类,其属性包括 age 和 name,并定义了一个名为 show 的方法。

1.4 案例3:使用 type 动态创建一个继承指定类的类


class Animal:
    def __init__(self, color="blue"):
        self.color = color

    def eat(self):
        print("吃东西")
Dog = type("Dog", (Animal, ), {})
dog = Dog()
dog.eat()
print(dog.color)

运行结果如下:

吃东西 blue

上述代码动态创建了一个继承自 Animal 类的 Dog 类。该新类可以直接使用 Animal 类中定义的所有方法和属性。

到此这篇关于 python 使用元类 type 创建类的文章就介绍到这了,更多相关元类type创建类内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。