python之父北京尚学堂怎么样_尚学堂百战程序员:Python的元类
什么是元类(metaclass)?
元类是类的类,是类的模板
元类的实例为类,正如类的实例为对象
class Foo:
pass
t1=Foo() #t1是通过Foo类实例化的对象
print(type(f1))
print(type(Foo))
所有的对象都是实例化或者说调用类而得到的(调用类的过程称为类的实例化),比如对象t1是调用FOO类得到的一个实例。
如果一切皆为对象,那么类Foo本质也是一个对象,既然所有的对象都是调用类得到的,那么Foo必然也是调用了一个类得到的,这个类称为元类。
一般来说,元类均被命名后缀为Metalass。想象一下,我们需要一个可以自动打招呼的元类,它里面的类方法呢,有时需要say_Hello,有时需要say_Hi,有时又需要say_Sayolala,有时需要say_Nihao。
如果每个内置的say_xxx都需要在类里面声明一次,那将是多么可怕的苦役! 不如使用元类来解决问题。
以下是创建一个专门“打招呼”用的元类代码:
Python
class SayMetaClass(type):
def __new__(cls, name, bases, attrs):
attrs['say_'+name] = lambda self,value,saying=name: print(saying+','+value+'!')
return type.__new__(cls, name, bases, attrs)
class SayMetaClass(type):
def __new__(cls, name, bases, attrs):
attrs['say_'+name] = lambda self,value,saying=name: print(saying+','+value+'!')
return type.__new__(cls, name, bases, attrs)
记住两点:
1、元类是由“type”衍生而出,所以父类需要传入type。【道生一,所以一必须包含道】
2、元类的操作都在 __new__中完成,它的第一个参数是将创建的类,之后的参数即是三大永恒命题:我是谁,我从哪里来,我将到哪里去。 它返回的对象也是三大永恒命题,接下来,这三个参数将一直陪伴我们。
“我们相信人人都可以成为一个IT大神,现在开始,选择一条阳光大道,助你入门,学习的路上不再迷茫。这里是北京尚学堂,初学者转行到IT行业的聚集地。"
如果有什么问题也可以关注IT百战程序员(baizhanchengxuyuan)
python之父北京尚学堂怎么样_尚学堂百战程序员:Python的元类相关推荐
- python之父北京尚学堂_尚学堂86---115Python_Note
第3章序列 序列是一种数据存储方式.用来存储一系列的数据.在内存中,序列就是一块用来存放 多个值的连续的内存空间.比如一个整数序列[10,20,30.40],可以这样示意表示: 10 20 30 ...
- python三维建模和cad比较_maya三维动画师和程序员(python)哪个前景好一些?
哪个前景好我先不说,我先告诉你哪个发量更多: 三维动画师更多. 我自己是做3D行业的,我也有程序员朋友. 从目前的市场需求来看,程序员的下限较低,可能学半年出去找工作直接都可以找到月薪过万的岗位:(不 ...
- python之父北京尚学堂_北京尚学堂 - 主页
${content} 你输入的邮件地址曾经通过${type}激活了本站帐号,请使用${type}帐号直接登录. 课程习题 : 提示 请选择一个答案 提交 查看正确答案 下一题 ${option}: $ ...
- 百战程序员python资源_【百战程序员】Python 文件I/O
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 打开和关闭文件 现在,您已经可以向标准输入和输出进行读写.现在,来看看怎么读写实际的数据文件. Python 提供了必要的函数和方法进行默认情况下的文件基 ...
- 程序布置到服务器上速度慢_百战程序员python面试题总结---高级语法(4)
4.1 简述 TCP 和 UDP 的区别以及优缺点? UDP 是面向无连接的通讯协议,UDP 数据包括目的端口号和源端口号信息. 优点:UDP 速度快.操作简单.要求系统资源较少,由于通讯不需要连接, ...
- cuda默认函数与c++冲突_好程序员Python教程系列-第8讲:函数和模块
好程序员Python教程系列-第8讲:函数和模块,在讲解本章节的内容之前,我们先来研究一道数学题,请说出下面的方程有多少组正整数解. 事实上,上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种 ...
- unicode 编码转换漏洞_好程序员Python教程之字符串编码知识小结
好程序员Python教程之字符串编码知识小结,提及Python字符串,你会想到什么?是ASCII,还是Unicode?他们之间是如何转换的?字符串编码和字符串有什么区别?接下来好程序员Python教程 ...
- python编码转换语句_好程序员Python教程之字符串编码知识小结
好程序员Python教程之字符串编码知识小结,提及Python字符串,你会想到什么?是ASCII,还是Unicode?他们之间是如何转换的?字符串编码和字符串有什么区别?接下来好程序员Python教程 ...
- vue函数如何调用其他函数?_好程序员Python教程系列之递归函数与匿名函数调用...
好程序员Python教程系列递归函数与匿名函数调用,函数是Python技术学习中重要的一个环节,深入掌握该阶段的知识内容,对于Python技术能力的提升非常有帮助,这里就针对递归函数与匿名函数两种函数 ...
- cat命令详解_好程序员Python培训之详解eval好与坏
好程序员Python培训之详解eval好与坏,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们一起来看一下吧. eval是Python的一个内置函数,这个函数的作用 ...
最新文章
- Facebook开源多款AI工具,支持游戏、翻译等
- 某华为程序员爆料:主动离职,公司竟也给n+1,到手15万,华为真良心!
- 抱歉,我觉得有些人做副业并不靠谱
- omnet++ : could not be resolved 或error: coreexception 的解决
- 使用ElasticSearch,Kibana,ASP.NET Core和Docker可视化数据
- phoneGap2.9+eclipse开发环境和helloword案例
- redis rdb aof区别_Redis(三):持久化RDB,fork.copyonwrite,AOF,RDBamp;AOF混合使用
- matlab数字图像处理函数,MATLAB数字图像处理学习(二)|常用函数
- OPPO K9 Pro将于9月26日登场:搭载天玑1200旗舰游戏芯
- Asp.Net服务器控件添加OnClientClick属性绑定
- JAVA类计算机专业毕业设计题目
- Android快速开发之appBase——实战《购物车》
- linux文件误删恢复debugfs和extundelete
- Esp8266(NodeMCU)物联网芯片的基本简介
- 零预算引爆个人和企业品牌
- 亚马逊发布“不可变”量子账本数据库产品
- three.js 构建简单的房间
- 2021 春季新品发布会上,苹果推出了全新配件 AirTag
- linux gmac10下载,ethmac10g verilog代码 10G eth mac verilog代码参考下载 - 下载 - 搜珍网...
- 前端LayUI框架快速上手详解(一)