python元编程详解
⼀、元编程的概念
元编程依赖于python的⼀个叫做元类的概念。元类就是当你的某段代码在被执⾏的过程中,另外⼀段代码同时在被执⾏。上说的很好,在⾯向对象编程中,元类的实例还是类。
当我们定义⼀个类时,该类的对象都是由这个类来创建。但是类本⾝呢?类⼜是由什么来创建的呢?
这个问题就引申出元类的概念了,元类可以为其他类定义属性。举个例⼦,下⾯这段代码为每个类添加了⼀个hello属性,⽽这些类都是由定义的元类创建。也就是说,这些类都会有⼀个hello的属性,并不需要他们⾃⼰去定义。
运⾏上⾯的代码,得到下⾯的结果:
我们可以看到,我们并没有在TryHello⾥⾯定义hello的⽅法,但是这个⽅法被⾃动执⾏了。因为TryHello使⽤了HelloMeta作为元类,所以在调⽤hello⽅法时,没有发⽣错误。所以,通过上⾯的例⼦,我们可以想到,我们可以使⽤元类为由元类创建的类⾃动新增⼀些⽅法。所以,元类的⼀个好处就是,在你还没有意识到的时候,神奇的事情就发⽣了。
下⾯这些框架就很好的使⽤到了元类,他们帮助你在编程过程中,书写更少的代码。
Django
SQLAlchemy
Flask
Theano
⼆、理解元类到底是怎么⼯作的
要搞清楚元类的概念,⾸先要弄懂python的type的概念。请看下⾯的代码⽰例:
可以看到,day的类型是str,字符串类型,我们可以使⽤内置的type()⽅法来查看对象的类型
1、查看类的类型
我们知道"Sunday"的类型是字符串类型str,那str⼜是什么类型呢?
通过上⾯的代码我们可以看到str的类型是type
2、<type>的类型
通过上⾯的代码我们可以看到type不仅仅是其他类型的元类,它也是它⾃⼰的元类
3、元类使⽤的特殊⽅法
type类型作为python的默认元类,定义了⼀些特殊的⽅法,这些⽅法可以被元类重写,将其定义成⾃⼰特有的⽅法,下⾯是这些魔术⽅法的⼀个清单:
__init__:初始化⽅法
__prepare__:定义类的命名空间
__call__:当新类被调⽤创建对象时被使⽤
三、元编程练习
1、练习⼀:使⽤装饰器
python中元编程被使⽤最⼴泛的⼀个位置就是装饰器,装饰器就是⽤来改变某个⽅法执⾏⾏为的⼀类⽅法。换句话说,装饰器就是以某个⽅法为输⼊,然后输出另外⼀个⽅法。举个例⼦如下:
执⾏结果如下:
从上⾯的代码可以看到,装饰器达到了元类的效果,⽽且⽐元类更加的简单。
2、练习⼆:使⽤元类
下⾯我们使⽤元类达到练习⼀的效果,⼤家可以对⽐⼀下
可以看到使⽤元类也同样达到了装饰器的效果。
四、元类的例⼦
1、例⼦⼀:实现⼀个类不能创建其⼦类
元编程最普遍的⼀个⽤法就是控制类的实例。⽐如,单例模式在很多地⽅被⽤到,⼀个单例类控制该类只能创建⼀个实例。下⾯的这个例⼦就是控制类的使⽤,我们使⽤元类限制该类被其他类继承。
通过上⾯的例⼦,我们可以看到当我们想要创建Final类的⼦类的时候发⽣了错误
2、例⼦⼆:创建⼀个记录执⾏时间的类
下⾯这段代码,使⽤了元类去记录代码的执⾏时间
通过上⾯的代码我们可以看到,每次使⽤Timed元类的时候,都会⾃动调⽤timer的⼯具类
>什么是编程举个例子
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论