代码改变世界

metaclass小结

2014-12-29 23:32 by 马鞍山鹏鹏, 267 阅读, 0 推荐, 收藏, 编辑
摘要:先前学习看到ORM的时候,需要用到metaclass相关的知识,于是,回过头来又去看关于metaclass的知识,看metaclass的时候,我又发现,一些和super相关的知识掌握的不是很透彻,于是又去复习了一下super相关的知识,看super的时候,又发现不了解Python的MRO,于是又去看MRO,MRO,super看完之后,又发现还需要看构造个性化的类相关的知识(__init__,与__... 阅读全文

转载:深刻理解Python中的元类(metaclass)

2014-12-29 15:00 by 马鞍山鹏鹏, 181 阅读, 0 推荐, 收藏, 编辑
摘要:看到的一篇关于metaclass文章,讲的比较通俗易懂,作者循序渐进,循循善诱的用简单生动的语言结合恰当的实例,把metaclass的概念给解释清楚。 转载的是一篇翻译后的文章,原文链接:深刻理解Python中的元类(metaclass) 英文原文链接:What is a metaclass in Python? 鉴于原链接的格式,看起来比较整齐与舒适,还是看原链接的内容吧。 阅读全文

Python的__init__, __new__魔法方法以及在__metaclass__元类中的使用

2014-12-29 14:34 by 马鞍山鹏鹏, 1181 阅读, 0 推荐, 收藏, 编辑
摘要:Python中类的实例化是由Python解释器先后调用__new__,__init__这两个魔法方法来完成的,前者用来完成实例化后的对象的“骨架”(比如,解释器会为对象分配地址,并返回一个指向该对象的引用值,该引用值会被紧接着传递给__init__函数),后者用“ self.属性名 = 属性值 ”这样的方式对实例化的对象进行“填充”。 1.__new__ 在一个类(假设为类A)实例化出一个对象的过... 阅读全文

Python中*args,**kwargs的使用

2014-12-28 21:25 by 马鞍山鹏鹏, 1243 阅读, 0 推荐, 收藏, 编辑
摘要:今天看到一个外国人写的一篇关于*args,与**kwargs如何使用的总结,非常有学习价值,尤其是他给出了一个继承之后重写父类方法的例子,可以很好的解决多重继承中参数传递的问题,看完之后,自己也实验了一下。原文链接http://agiliq.com/blog/2012/06/understanding-args-and-kwargs/。 原文如下: When i started lea... 阅读全文

Python 中Super的使用(二)

2014-12-28 21:23 by 马鞍山鹏鹏, 1129 阅读, 0 推荐, 收藏, 编辑
摘要:1.如何使用super 一开始照着示例代码去用super的时候,觉得这个东西很简单,就像其他的单继承机制的语言中的super一样好用,好理解。可是,当你试着混合诸如bound super object,与unbound super object,metaclass,proxy object,descriptor,MRO,multiple inheritance 这样的概念一起来理解的时候,脑子就... 阅读全文

Python中super()的使用(一)

2014-12-25 12:47 by 马鞍山鹏鹏, 323 阅读, 0 推荐, 收藏, 编辑
摘要:1.super被引入的初衷 super()通常是被说成super函数,其实它是一个内置的类,是在Python2.2中新增加的,super()实例化一个super对象,这个super对象充当一个访问代理的角色,它帮助子类的对象访问父类,祖父类以及所有祖先类中被方法(尤其是访问那些被子类重写的方法)。 在super类没有出现以前,如果要在子类方法中去调用父类的... 阅读全文