文章分类 - python
摘要:2016-10-25 17:04 的邮件 正思考着如何给 djkit(Django starter)项目添加 admin 和 models 的支持, 此时收到一封邮件,来自 uhayate,内容如下: 看了他的 github 和博客,我确定我不认识这个同学,这下有意思了,我的博客居 然被人搜索到而且
阅读全文
摘要:在Python中一切都是对象,类型也是对象;类比类型和实例的概念,类型也必然有自己的类型,十分合理。事实上,类型的类型其实就是术语元类型的意思,python里面所有类型的元类型默认都是type。默认情况下我们新建一个类,在不手动指定元类型的前提下,type会被指定为元类型 ,元类型能够控制类型的创建
阅读全文
摘要:模块是ruby的特色功能之一,除了提供代码级别的命名空间用于解决区分和冲突的问题,它能提供给我们另一个维度上的代码复用,弥补单继承的一些限制,有点像自带实现的接口,无副作用的添加一些实用的功能,整体概括起来大概就是: 提供命名空间A.foo vs B.foo Mixin扩展功能弥补单继承,给类提供通
阅读全文
摘要:Mixin模式是一种在python里经常使用的模式,适当合理的应用能够达到复用代码,合理组织代码结构的目的。 Python的Mixin模式可以通过多继承的方式来实现, 举例来说,我们自定义一个简单的具有嵌套结构的数据容器: class SimpleItemContainer(object): def
阅读全文
摘要:Mix-in技术介绍 Mixin可 以译为混入,就是在不改变原对象的情况下对其进行扩展。本文介绍了在 Python 语言中,如何实现Mixin技术,及安装的相应技巧。 什么是Mix-in技术 Mix-in技术,中文不知道应该如何称呼,但意思好象是混入。它 的作用是,在运行期间,动态改变类的基类或类的
阅读全文
摘要:monkey patch (猴子补丁) 用来在运行时动态修改已有的代码,而不需要修改原始代码。 简单的monkey patch 实现:[Python] #coding=utf-8 def originalFunc(): print 'this is original function!' def m
阅读全文
摘要:1.gevent模块简介 gevent是一个基于libev的并发库。它为各种并发和网络相关的任务提供了整洁的API。 gevent中用到的主要模式是greenlet,它是以C扩展模块形式接入Python的轻量级协程。 greenlet全部运行在主程序操作系统进程的内部,但它们被协作式地调度。 2.g
阅读全文
摘要:何谓猴子补丁(Monkey Patch)?在动态语言中,不修改源代码而对功能进行追加和变更。 使用猴子补丁的目的: 1、追加功能 2、功能变更 3、修正程序错误 4、增加钩子,在执行某个方法的同时执行一些其他的处理,如打印日志,实现AOP等, 5、缓存,在计算量很大,结算之后的结果可以反复使用的情况
阅读全文
摘要:monkey patch (猴子补丁) 用来在运行时动态修改已有的代码,而不需要修改原始代码。 简单的monkey patch 实现:[python] #coding=utf-8 def originalFunc(): print 'this is original function!' def m
阅读全文
摘要:Monkey patch就是在运行时对已有的代码进行修改,达到hot patch的目的。Eventlet中大量使用了该技巧,以替换标准库中的组件,比如socket。首先来看一下最简单的monkey patch的实现。 ? 1 2 3 4 5 6 7 8 9 10 11 12 class Foo(ob
阅读全文
摘要:在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定。这个概念的名字来源于由James Whitcomb Riley提出的鸭子测试(见下面的“历史”章节),“鸭子测试”可以这
阅读全文
摘要:背景 学动态语言的都知道一句话:“如果它走起来像鸭子,而且叫起来像鸭子,那么它就是鸭子”,Javascript也支持鸭子类型,下文就说说鸭子类型在Javascript中的两个应用场景。 两个推论 一个小测试 Javascript中的惯用法 我们自己来模仿鸭子 备注 鸭子类型和隐式接口有那么一点点类似
阅读全文
摘要:第一部分 基础知识 作为本书的第一部分,我们在进入设计模式的学习之前,需要先了解一些相关的周边知识,例如一些面向对象的基础知识、this等重要概念,还要掌握一些函数式编程的技巧。这些都是学习设计模式的必要铺垫。 第1章 面向对象的JavaScript JavaScript没有提供传统面向对象语言中的
阅读全文
摘要:在动态语言的世界里一直流传着一种叫做鸭子类型的风格,其来自谚语:“如果行鸭子一样走路,像鸭子一样呱呱叫,那它就是一只鸭子”。 从鸭子类型,我们可以联想到它的推导,并不在乎类型的真正实体,只要他的行为有鸭子的特性,那么我们就可以把它当做一只鸭子来看到。在动态语言设计中,可以解释为无论一个对象是什么类型
阅读全文
摘要:monkey patch指的是在运行时动态替换,一般是在startup的时候.用过gevent就会知道,会在最开头的地方gevent.monkey.patch_all();把标准库中的thread/socket等给替换掉.这样我们在后面使用socket的时候可以跟平常一样使用,无需修改任何代码,但是
阅读全文
摘要:什么是鸭子类型 在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定。这个概念的名字来源于鸭子测试,“鸭子测试”可以这样表述:“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起
阅读全文
摘要:“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。” 我们并不关心对象是什么类型,到底是不是鸭子,只关心行为。 比如在Python中,有很多file-like的东西,比如StringIO,GzipFile,socket。它们有很多相同的方法,我们把它们当作文件使
阅读全文
摘要:以前写过一篇文章讲了一下python中的多态,最后得出结论python不支持多态,随着对python理解得加深,对python中得多态又有了一些看法。 首先Python不支持多态,也不用支持多态,python是一种多态语言,崇尚鸭子类型。以下是维基百科中对鸭子类型得论述: 在程序设计中,鸭子类型(英
阅读全文
摘要:1、标准的序列操作: 索引、分片、乘法、判断成员资格、求长度、取最大值和最小值 2、python之删除命令的区别: >>> x ['or', 'not', 'to', 'be', 'or', 'be'] del:删除指定索引的值 >>> del x[0] >>> x ['not', 'to', 'b
阅读全文
摘要:Python的序列 Python有6种内建的序列,包括:列表、元组、字符串、Unicode字符串、buffer对象和xrange对象。其中最为常用的是Python的列表和元组。 Python序列的应用 Python在操作一组数据时,通常是用序列来表示这组信息。(序列也可以包含其他序列) Python
阅读全文

浙公网安备 33010602011771号