实例对象是由类来创建,那么类又是由什么来创建的呢? 答案就是元类。
In [19]: print(type(1)) # 数值的类型
<class 'int'>
In [20]: type(1)
Out[20]: int
In [21]: print(type("fat boy")) # 字符串类型
<class 'str'>
In [22]: type("fat boy")
Out[22]: str
In [23]: print(type(FatBoy())) # 实例对象类型
<class '__main__.FatBoy'>
In [24]: type(FatBoy())
Out[24]: __main__.FatBoy
In [25]: print(type(FatBoy)) # 类的类型
<class 'type'>
In [26]: type(FatBoy)
Out[26]: type
.在python中,type用来创建对象 如:
Test2 = type("Test2",(),{}) # 定义了一个Test2类
其中() 是创建类的父类,{}是创建类的属性
In [31]: @classmethod
...: def class_method(cls):
...: print(cls.hobby)
...:
In [32]: FatBossGril = type('FatBossGril',(FatBoss,),{'id':1005,'static_method':static_method,'class_method':class_method})
##FatBoss为创建类FatBossGril的父类,属性方法需提前定义def
就元类本身而言,它们其实是很简单的:
- 拦截类的创建
- 修改类
- 返回修改之后的类