1.让一个对象的某个方法可以随时改变,而不用更改对象的代码

2.对于动态类型的Python语言,不需要定义接口

3.基本的实现方法:用类作为参数传递

例如:

12_eg3.py

class Moveable:

def move(self):

print('Move...')

class MoveOnFeet(Moveable):

def move(self):

print("Move on Feet.")

class MoveOnWheel(Moveable):

def move(self):

print("Move on Wheels.")

class MoveObj:

def set_move(self,moveable):

self.moveable = moveable()

def move(self):

self.moveable.move()

class Test:

def move(slef):

print("I'm Fly.")

if __name__ == '__main__':

m = MoveObj()

m.set_move(Moveable)

m.move()

m.set_move(MoveOnFeet)

m.move()

m.set_move(MoveOnWheel)

m.move()

m.set_move(Test)

m.move()

程序的运行结果为:

4.最简的实现方法:函数作为参数来传递

例如:

def movea():

print('Move a.')

def moveb():

print('Move b.')

class MoveObj:

def set_move(self,moveable):

self.moveable = moveable

def move(self):

self.moveable()

if __name__ == '__main__':

m = MoveObj()

m.set_move(movea)

m.move()

m.set_move(moveb)

m.move()

程序的运行结果为:

原文链接:http://www.maiziedu.com/wiki/python/strategy/

Python策略模式实现源码分享的更多相关文章

  1. 第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图

    第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图 1.基本概念 2.反爬虫的目的 3.爬虫和反爬的对抗过程以及策略 scra ...

  2. 二十四 Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图

    1.基本概念 2.反爬虫的目的 3.爬虫和反爬的对抗过程以及策略 scrapy架构源码分析图

  3. 3D语音天气球(源码分享)——完结篇

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 由于这篇文章是本系列最后一篇,有必要进行简单的回顾和思路整理. 这个程序是由两 ...

  4. Newlife商业源码分享

    [商业源码]生日大放送-Newlife商业源码分享 今天是农历六月二十三,是@大石头的生日,记得每年生日都会有很劲爆的重量级源码送出,今天Newlife群和论坛又一次疯狂了,吃水不忘挖井人,好的东西肯 ...

  5. 微信小程序——智能小秘“遥知之”源码分享(语义理解基于olami)

    微信小程序智能生活小秘书开发详解 >>>>>>>>>>>>>>>>>>>>> ...

  6. python重试库retryiny源码剖析

    上篇博文介绍了常见需要进行请求重试的场景,本篇博文试着剖析有名的python第三方库retrying源码. 在剖析其源码之前,有必要讲一下retrying的用法,方便理解. 安装: pip insta ...

  7. C/C++编程笔记:C语言开发球球大作战(源码分享),你想试试吗?

    游戏背景 <球球大作战>是Superpop一款自主研du发的免费手机网络游戏. 以玩家间的实时互动PK产生游戏乐趣为设计宗旨,通过简单的规则将玩家操作直接转化为游戏策略,体验智谋碰撞的战斗 ...

  8. [DeviceOne开发]-土地销售项目源码分享

    一.简介 这个是一个真实项目开源,虽然不是很花哨,但是中规中矩,小细节处理的也很好,非常值得参考和借鉴.里面的数据都缓存到本地,可以离线运行,但是调整一下代码,马上就可以和服务端完全对接.后续会有详细 ...

  9. WP8.1&Win10幸运大转盘源码分享

    先AD一下我的群:Win10开发者群:53078485 最近在写一个APP,其中需要一个转盘动画的源码,找了很多但是都没有找到,无奈只好自己来写,写完效果自己还是比较满意的,分享出来,有需要的童鞋可以 ...

随机推荐

  1. google prettify 代码高亮显示

    引入js和css文件 下载地址 http://files.cnblogs.com/jaday/prettify.zip js文件代码 !function(){var q=null;window.PR_ ...

  2. python学习笔记三 函数(基础篇)

    函数 内置函数 常用的内建函数: type()  列出指定对象的类型 help()  能够提供详细的帮助信息 dir()    将对象的所有特性列出 vars()  列出当前模块的所有变量 file, ...

  3. 幸运数字(number)

    幸运数字(number) Time Limit:1000ms   Memory Limit:64MB [题目描述] LYK最近运气很差,例如在NOIP初赛中仅仅考了90分,刚刚卡进复赛,于是它决定使用 ...

  4. javascript耐人寻味

    在思考javascript解释过程的时候,看过别人几篇文章,自己做了几个测试 容易理解,在javascript,形如这样的代码可以正常执行: alert(hello()); function hell ...

  5. JavaScript语句

    JavaScript语句 1.JavaScript语句负责向浏览器发出指令,告诉浏览器应该做什么. 2.分号(;): 用于分隔JavaScript语句,通常在每条可执行的语句结尾添加分号,使用分号也可 ...

  6. 5-JS函数

    函数 定义函数 JS中有3种定义函数的方法: 函数声明 用函数声明定义函数的方式如下: function abs(x) { if (x >= 0) { return x; } else { re ...

  7. Date Picker Calendar For Oracle Forms 6i

    Giving date picker calendar option to user for date type fields in Oracle Forms. I am providing you ...

  8. 用sql的select语句从数据库中获取数据

    基本的select语句 select语句中的算数表达式和NULL值 列的别名 使用连接符操作,literal character strings,alternative quote operator, ...

  9. ios 学习线路(图片)(摘录)

    iOS学习路线

  10. Codeforces Round #286 (Div. 2) B. Mr. Kitayuta's Colorful Graph dfs

    B. Mr. Kitayuta's Colorful Graph time limit per test 1 second memory limit per test 256 megabytes in ...