Python教程39:元类(Metaclass)
Python教程39:元类(Metaclass) “元类就是深度魔法,99%的用户应该根本不必为此操心。” —— Tim Peters 元类是Python的高级特性,用于创建类的"类"。今天我们揭开元类的神秘面纱,理解Python对象系统的底层机制。 1. 什么是元类 一切皆对象 在Python中,类也是对象: 1class MyClass: 2 pass 3 4# 类是对象 5print(type(MyClass)) # <class 'type'> 6print(isinstance(MyClass, type)) # True 7 8# 类可以赋值、作为参数 9AnotherName = MyClass 10def func(cls): 11 return cls() 元类(Metaclass): 创建类的"类" type是Python的默认元类 类是元类的实例 1# 类是type的实例 2class MyClass: 3 pass 4 5print(type(MyClass)) # <class 'type'> 6 7# 等价于 8MyClass = type('MyClass', (), {}) type的三种用法 1# 用法1:查看对象类型 2print(type(5)) # <class 'int'> 3 4# 用法2:动态创建类 5# type(name, bases, dict) 6MyClass = type('MyClass', (), {'x': 5}) 7obj = MyClass() 8print(obj.x) # 5 9 10# 用法3:作为元类(继承type) 11class MyMeta(type): 12 pass 2. 动态创建类 使用type动态创建类: ...