admin管理员组文章数量:1794759
python元编程详解
一、元编程的概念
元编程依赖于python的一个叫做元类的概念。元类就是当你的某段代码在被执行的过程中,另外一段代码同时在被执行。维基百科上说的很好,在面向对象编程中,元类的实例还是类。
当我们定义一个类时,该类的对象都是由这个类来创建。但是类本身呢?类又是由什么来创建的呢?
这个问题就引申出元类的概念了,元类可以为其他类定义属性。举个例子,下面这段代码为每个类添加了一个hello属性,而这些类都是由定义的元类创建。也就是说,这些类都会有一个hello的属性,并不需要他们自己去定义。
运行上面的代码,得到下面的结果:
我们可以看到,我们并没有在TryHello里面定义hello的方法,但是这个方法被自动执行了。因为TryHello使用了HelloMeta作为元类,所以在调用hello方法时,没有发生错误。所以,通过上面的例子,我们可以想到,我们可以使用元类为由元类创建的类自动新增一些方法。所以,元类的一个好处就是,在你还没有意识到的时候,神奇的事情就发生了。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~
下面这些框架就很好的使用到了元类,他们帮助你在编程过程中,书写更少的代码。
Django
SQLAlchemy
Flask
Theano
\\
二、理解元类到底是怎么工作的要搞清楚元类的概念,首先要弄懂python的type的概念。请看下面的代码示例:
可以看到,day的类型是str,字符串类型,我们可以使用内置的type()方法来查看对象的类型
1、查看类的类型我们知道"Sunday"的类型是字符串类型str,那str又是什么类型呢?
通过上面的代码我们可以看到str的类型是type
2、的类型通过上面的代码我们可以看到type不仅仅是其他类型的元类,它也是它自己的元类
3、元类使用的特殊方法type类型作为python的默认元类,定义了一些特殊的方法,这些方法可以被元类重写,将其定义成自己特有的方法,下面是这些魔术方法的一个清单:
init:初始化方法
prepare:定义类的命名空间
call:当新类被调用创建对象时被使用
三、元编程练习 1、练习一:使用装饰器python中元编程被使用最广泛的一个位置就是装饰器,装饰器就是用来改变某个方法执行行为的一类方法。换句话说,装饰器就是以某个方法为输入,然后输出另外一个方法。举个例子如下:
执行结果如下:
从上面的代码可以看到,装饰器达到了元类的效果,而且比元类更加的简单。
2、练习二:使用元类下面我们使用元类达到练习一的效果,大家可以对比一下
可以看到使用元类也同样达到了装饰器的效果。
四、元类的例子 1、例子一:实现一个类不能创建其子类元编程最普遍的一个用法就是控制类的实例。比如,单例模式在很多地方被用到,一个单例类控制该类只能创建一个实例。下面的这个例子就是控制类的使用,我们使用元类限制该类被其他类继承。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~
通过上面的例子,我们可以看到当我们想要创建Final类的子类的时候发生了错误
2、例子二:创建一个记录执行时间的类下面这段代码,使用了元类去记录代码的执行时间
通过上面的代码我们可以看到,每次使用Timed元类的时候,都会自动调用timer的工具类。
资料视频教程领取方式:
1、点赞+评论(勾选“同时转发”)
2、关注小编。并私信回复关键字【资料】 (一定要私信哦~点击我的头像就能看到私信按钮了)
版权声明:本文标题:python元编程详解 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686558973a81807.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论