python学习手册中的python多态示例代码

yipeiwu_com6年前Python基础

在处理多态对象时,只需要关注它的接口即可,python中并不需要显示的编写(像Java一样)接口,在使用对象的使用先假定有该接口,如果实际并不包含,在运行中报错。

复制代码 代码如下:

class handGun():
    def __init__(self):
        pass
    def fire(self):
        print 'handGun fire'

class carbine():
    def __init__(self):
        pass
    def fire(self):
        print 'carbine fire'

import handGun
import carbine
class gunFactory():
    def __init__(self,gun_type):
        self.gun_type = gun_type
    def produce(self):
        if handGun == self.gun_type:
            return handGun.handGun()
        else:
            return carbine.carbine()

客户端

复制代码 代码如下:

fa = gunFactory(handGun)
gun = fa.produce()

/*只要是枪,就认为它具有开火的功能,如果没有开火的功能,程序运行中就报错*/
gun.fire()

可以看到跟一般的静态语言相比,python并没有在语言级别来保证接口的正确性,只能依靠文档、代码来保证(可以在代码中检查接口是否存在,hasattr(gun,'fire'))

相关文章

Python针对给定字符串求解所有子序列是否为回文序列的方法

Python针对给定字符串求解所有子序列是否为回文序列的方法

本文实例讲述了Python针对给定字符串求解所有子序列是否为回文序列的方法。分享给大家供大家参考,具体如下: 问题: 给定一个字符串,得到所有的子序列,判断是否为回文序列 思路: 对字符...

Python学习笔记(一)(基础入门之环境搭建)

Python学习笔记(一)(基础入门之环境搭建)

  Python入门       本系列为Python学习相关笔记整理所得,IT人,多学无害,多多探索,激发学习兴趣,开拓思维...

Python实现ping指定IP的示例

Python实现ping指定IP的示例

贴代码: import os import sys iplist = list() ip = '192.168.1.11' # ip = '172.24.186.191'...

用Python脚本来删除指定容量以上的文件的教程

文件多了乱放, 突然有一天发现硬盘空间不够了, 于是写了个python脚本搜索所有大于10MB的文件,看看这些大文件有没有重复的副本,如果有,全部列出,以便手工删除 使用方式 加一个指定...

详解django的serializer序列化model几种方法

序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据 方法一:通过继承View类,重写get方法,获...