元类
(1)简介
- 元类(Metaclass)是Python中比较高级的概念,它允许你在创建类时定制类的创建过程。在Python中,类本身也是对象,而元类就是用来创建这些类的类。元类提供了一种控制类创建行为的机制。
(2)创建方式
(1)使用关键字声明创建
| class Heart(object): |
| pass |
| |
| |
| print(Person) |
(2)使用type关键字创建
| Heart = type('Heart', (), {}) |
| print(Heart) |
(3)研究type的参数
- type(类的名字,类想要继承的父类,当前类内部的属性)
- 名称空间中放的函数属性其实就是一个非绑定方法,而不是绑定方法
| class Person(object): |
| name = 'heart' |
| |
| |
| print(Person) |
| |
| print(Person.__bases__) |
| |
| print( |
| Person.__dict__) |
| |
| |
| def read(): |
| ... |
| |
| |
| PersonType = type('PersonType', (object,), {'name': 'god', 'age': 18, 'read': read}) |
| |
| print(PersonType) |
| |
| print(PersonType.__bases__) |
| |
| print( |
| PersonType.__dict__) |
(4)元类
-
在这个例子中,Meta
是一个元类,它继承自内置的 type
类。元类中定义了 __init__
方法,这个方法在创建类时被调用。当你使用 metaclass=Meta
创建类 Class
时,Meta
的 __init__
方法会被触发。
-
具体而言,在 Class
类定义的时候,Meta
的 __init__
方法会被调用,打印一条消息,然后通过 super().__init__(what, bases, dict)
调用父类 type
的 __init__
方法,完成类的初始化过程。
| class Meta(type): |
| def __init__(cls, what, bases, dict): |
| print(f'我是Meta 里的 init方法') |
| super().__init__(what, bases, dict) |
| |
| |
| class Class(metaclass=Meta): |
| ... |
| |
| |
| p = Class() |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通