多态 分发

博客探讨了多态概念在处理文件格式分发中的应用,通过实例展示了如何根据不同格式输出'abc',包括html、xml和text类型。
摘要由CSDN通过智能技术生成
#coding:utf-8

def output_xml(name):
    print 'XML:%s' % name

def output_html(name):
    print 'HTML:%s' % name

def output_doc(name):
    print 'DOC:%s' % name


def putdoc(types,name):
    print types,type(types)
    print name,type(name)

    eval('output_%s("%s")' % (types,str(name)))

putdoc('doc',"sam")


实例二:

有两个文件如下:

myoutformat.py #定义输出的文件格式

#coding:utf-8

class outputForm(object):

    def output_html(self,data):

        print 'html:',data

    def output_xml(self,data):
        print 'xml:',data

    def output_text(self,data):
        print 'text:',data

if __name__=="__main__":
    pass

myout.py #调用输出文件格式模块,输出文件

#coding:utf-8

import myoutformat

def f(inst,form,data):

    #inst.output_text 是默认的方法参数,返回函数(或者:getattr(inst,'output_text')),如果此处是个字符串,则返回该字符串。此处应该是函数名称,返回函数
    fun=getattr(inst,"output_%s" % form,inst.output_text)
    #调用函数fun
    fun(data)

if __name__ == '__main__':
    a=myoutformat.outputForm()
    f(a,"html",'abc')
    f(a,"xml",'abc')
    f(a,"text",'abc')
    f(a,"NAME",'abc')


结果:

html: abc
xml: abc
text: abc
text: abc


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值