xone

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

使用type创建类

type还有一种功能,动态创建类

type(类名,由父类名称组成的元组(针对继承的情况,可以为空),包含属性的字典(名称和值))

 

class Test1:
    pass

Test2 = type("Test2",(),{})

t1 = Test1()
t2 = Test2()
print(type(t1))
print(type(t2))

  输出

<class '__main__.Test1'>
<class '__main__.Test2'>

  

class是type创建的

type是元类

 

metaclass

除了使用type()动态创建类以外,要控制类的创建行为,还可以使用metaclass。

metaclass,直译为元类,简单的解释就是:

当我们定义了类以后,就可以根据这个类创建出实例,所以:先定义类,然后创建实例。

 

Python做了如下的操作:
1. Foo中有__metaclass__这个属性吗?如果是,Python会通过 __metaclass__创建⼀个名字为Foo的类(对象)

2. 如果Python没有找到__metaclass__,它会继续在Bar(⽗类)中寻找 __metaclass__属性,并尝试做和前⾯同样的操作。

3. 如果Python在任何⽗类中都找不到__metaclass__,它就会在模块层次 中去寻找__metaclass__,并尝试做同样的操作。

4. 如果还是找不到__metaclass__,Python就会⽤内置的type来创建这个类 对象。

 

posted on 2019-01-17 14:23  周小百  阅读(106)  评论(0编辑  收藏  举报