pattern 学习记录

1. 单例模式

只有一个实例、它必须自行创建这个实例,不需要显示的手动去创建实例、它必须自行向整个系统提供这个实例。

在python中模块就是一个实现单例很好的工具,

python的模块:

所有变量都会绑定到模块

模块只需要初始化一次

import 机制是线程,安全的(保证在并发状态下模式也只有一个实例)

惯用方法:

在命名模块的时候,首个字母大写   Monitor.py

__all__


2. 装饰器

pythonic的装饰器

def func(arg):

    def _(tmp = 0.0):

        return tmp + arg

    return _

a = func(0.99)

b = func(0.1)

c = func(0.2)

print a(b(c()))

-----> 1.2


3. 动态语言特有的设计模式: Mixin  ( and duck typing )

动态地改变实例的类型的基类,在不修改生成实例过程的情况下,给实例增加(改变)功能。可用它实现插件框架。

class Bird(object):

    pass

bird = Bird()

class FlyMixin:

    def fly(self):

        print  "I can fly."

bird.__class__.__bases__ += (FlyMixin,)

bird.fly()

--->  I can fly.


工具:

docopt 解释器模式 (vs. getopt, optparse, argparse)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值