点击这里:Python 元类使用介绍说明

我要大群类都具有中特点我如何给他们加上呢?模板模板吗我从这个模板创建群类不就OK了?那就需要元类了霍霍
定义个元类(就所个类模板!莫多想还要记住这是类级别不是对象级别!):
复制代码 代码如下:

MyMeta(type):
def __init__(cls,name,bases,dic):
pr cls.__name__
pr name
def __str__(cls): 'Beautul %s'%cls.__name__


这是个什么东西?哈这是个元类是个类模板
它要用在哪里?它要用在个类里作为这个类模板
什么作用?模板就是提供些共同特征
这个类提供了什么样特征?两个特征1类定义后打印类名字(__init__)2打印类格式(__str__)
到底回如何工作打开解释器输入以上代码上路:
输入:
MyClass(object):
__meta__ = MyMeta
回车结束类定义时输出:
MyClass
MyClass
明白了吧霍霍!事实证明它确实是个类而不是个对象!!!!!这个是第个特征
第 2个:
输入:
pr MyClass
输出:
Beautul MyClass
啊哈恰如其分如我们所预料那样!!!!!!!!当然你可以任意个性化你类!!
####################################################################################
下面我们来实现个Singleton模式(来自啄木鸟社区):
Singleton元类:
复制代码 代码如下:

Singleton(type):
def __init__(cls,name,bases,dic):
super(Singleton,cls).__init__(name,bases,dic)
cls.instance = None
def __call__(cls,*args,**kwargs):
cls.instance is None:
cls.instance = super(Singleton,cls).__call__(*args,**kwargs)
cls.instance


非常简单个设计模式相信你能明白是如何回事!
复制代码 代码如下:

MyClass(object):
__meta__ = Singleton
def __init__(self,arg):
self.arg = arg


使用了Singleton元类
是不是只能有个例子呢??那只能看看了邓爷爷说好:实战是检验真理标准——精华!!
复制代码 代码如下:

>>> my1 = MyClass("hello")
>>> my2 = MyClass("world")
>>> my1 is my2
True
>>> my1.arg
'hello'
>>> my2.arg
'hello'


我们创建my2尝试失败了而这恰恰证明我们成功了
其实元类用不多理解理解霍霍!!
Tags:  python教程 点击这里

延伸阅读

最新评论

发表评论