元类
目录
1|0一、元类
1|11. 什么是元类
- 在python中,一切皆对象,用class 关键字定义的类其本身也是一个对象。负责产生该对象的类就是元类。python中,
type
类就是元类,且凡是继承了type
类的类,也是元类。
1|22. 元类有什么用
-
通过自定义一个元类,来控制类的产生,还可以控制这个类的实例化对象的产生。
-
1|33. 内置函数exec
1|44. 自定义一个元类
1|55. 元类和普通类的联系
1|66. 用元类控制类的创建
- 下面的只是对自定义的普通类的名称空间做一个判断,若是要通过元类修改普通类的名称空间,就要使用
def __new__(cls, class_name , class_bases , class_dic)
,__new__ 和 __init__
接收的参数是一样的,对普通类的名称空间修改之后,在通过return 方法将对象返回出去 。即obj = object.__new__(cls , class_name , class_bases , class_dic) 换行 return obj
。
1|77. __call__
1|88. __new__
-
我们之前说类实例化第一个调用的是__init__,但__init__其实不是实例化一个类的时候第一个被调用 的方法。当使用 Persion(name, age) 这样的表达式来实例化一个类时,最先被调用的方法 其实是 new 方法。
__new__方法接受的参数虽然也是和__init__一样,但__init__是在类实例创建之后调用,而 __new__方法正是创建这个类实例的方法。
注意:*new*() 函数只能用于从object继承的新式类。
1|99. 元类控制类的实例化
1|1010. 自定义元类后的类的继承顺序
-
查找顺序:先对象自己——》实例化对象的类 ——》这个类的父类(多父类时按父类的继承顺序 ,新式类按照广度优先)——》object——》自定义的元类——》type
-
注意:所有类(包括type)都继承了object类。即所有类中
__new__
都是最终由object中的__new__
完成的。
__EOF__

本文作者:BigSun丶
本文链接:https://www.cnblogs.com/Mcoming/p/11794150.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/Mcoming/p/11794150.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!