多态 分发 分类: python 小练习 divide into python 2013-11-05 19:11 394人阅读 评论(0) 收藏

#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


版权声明:本文为博主原创文章,未经博主允许不得转载。

posted @ 2013-11-05 19:11  前行者2011  阅读(114)  评论(0编辑  收藏  举报