一:元类定义
创建类的类叫做元类。类是元类创建出来的对象
class Demo(object):
def __call__(self, *args, **kwargs):
print("---call---执行了")
d = Demo()
d()
# 输出结果type,代表元类
print("创建d的类为:",d.__class__)
print("创建Demo的类为:",Demo.__class__)
print(str.__class__)
![](https://img.haomeiwen.com/i15616481/ca2954d49bb2b177.png)
二、type的两种使用
1、获取数据的类型:type(object) -> the object's type
2、创建类:type(name, bases, dict) -> a new type
参数:
name:类名(只能是str类型)
bases:继承的父类(只能是元祖类型)
dict:属性和方法组成的字典(只能是字典类型)
返回值:创建出来的类
2-1:给类添加属性
# 通过class定义类
class MyClass1():
a = 100
b = 200
# 通过元类定义类(动态创建类)
MyClass2 = type("MyClass2",(object,),{"name":100,"age":200})
print(MyClass1)
print(MyClass2)
![](https://img.haomeiwen.com/i15616481/84bc6f826de58cae.png)
2-2:给类添加方法
def work(self):
print("---work---方法")
MyClass3 = type("MyClass2",(object,),{"name":100,"age":200,"work":work})
print(MyClass3.__dict__)
m = MyClass3()
m.work()
![](https://img.haomeiwen.com/i15616481/c4195554a9d2138c.png)
网友评论