python-type&object&metaclass
2021/8/26 14:36:04
本文主要是介绍python-type&object&metaclass,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
abc -> AbstractBaseClass -> 抽象基类
object和type和class和metaclass
- object
- python所有的类都继承至object,object是所有对象的抽象
- class关键字定义的类型,默认都是继承于object的
- type
- 继承至object
- type是对类型的抽象,用来创建一个类型,__new__创建一个空间放这个类型,__init__初始化这个空间
- type可以创建python类型,
type(name, bases, dict) -> a new type
(先不纠结:先有type还是先有object(-_-)
- class
- class定义一个类型,当代码执行到class定义语句时,会创建一个类型
- 默认:没有定义metaclass的情况下,创建类型可以理解为
type(name=ClassName, bases=[object], dict=dict(xx=xx))
- metaclass,
class Demo(metaclass=MetaClass) -> 指定一个metaclass在创建类型的时候就会用指定的metaclass去创建这个类型
- metaclass创建类型:指定了metaclass或定义了__metaclass__属性或父类有__metaclass__属性,那么会用这个metaclass去创建类型(metaclass必须是type的子类)
class Demo(A,metaclass=B)
先定义继承类,然后定义metaclass,先定义metaclass会语法错误,创建和初始化类型之间,python会先读取类定义,然后根据类的定义及继承体系去创建并初始化类型,并且,在创建初始化类型的过程中是可以覆盖类定义/重载的方法的
# 定义一个metaclass class MetaClass(type): # 定义一个metaclass必须继承于type pass # 使用一个metaclass class Demo(metaclass=MetaClass): # 调用MetaClass的__new__和__init__方法来创建一个类型对象 pass # 创建一个Demo实例 demo = Demo() # 调用object的__new__和__init__方法来创建一个对象
这篇关于python-type&object&metaclass的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享