元类

本文探讨Python中使用type动态创建类的方法及metaclass控制类创建行为的应用,深入解析元类的工作原理。

使用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来创建这个类 对象。

 

转载于:https://www.cnblogs.com/xone/p/10282013.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值