编程知识

当前位置:mg游戏平台手机版 > 编程知识 > 传入的方法名不同,通常用来执行一个字符串表

传入的方法名不同,通常用来执行一个字符串表

来源:http://www.alcandaskincare.com 作者:mg游戏平台手机版 时间:2019-10-20 20:02

pyMethod类下定义了八个办法,getattr(pyMethod(),'out%s'%str)()   传入的办法名差别,调用不一样的点子。些处方法名称叫字符串。

Python中用字符串调用函数或方式言传身教代码,python示例代码

前言

正文主要给我们介绍了关于Python用字符串调用函数或方法的连带内容,共享出去供大家参照他事他说加以考察学习,下边来生气勃勃块会见详细的牵线:

先看一个事例:

>>> def foo():
    print "foo"

>>> def bar():
    print "bar"

>>> func_list = ["foo","bar"]
>>> for func in func_list:
    func()
TypeError: 'str' object is not callable

大家期望遍历施行列表中的函数,但是从列表中赢得的函数名是字符串,所以会指示类型错误,字符串对象是不可以调用的。假设大家想要字符串形成可调用的靶子呢?或是想透过变量调用模块的本性和类的特性呢?

以下有二种方式能够兑现。

eval()

>>> for func in func_list:
    eval(func)()
foo
bar

eval() 平常用来进行二个字符串表明式,并回到表明式的值。在此边它将字符串转变来对应的函数。eval() 功效强盛不过正如危殆(eval is evil),不建议采纳。

locals()和globals()

>>> for func in func_list:
    locals()[func]()
foo
bar

>>> for func in func_list:
    globals()[func]()
foo
bar

locals() 和 globals() 是python的八个放置函数,通过它们得以一字典的格局访谈片段和全局变量。

getattr()

getattr() 是 python 的内建函数,getattr(object,name) 就也就是object.name,可是此地 name 可以为变量。

返回 foo 模块的 bar 方法

>>> import foo
>>> getattr(foo, 'bar')() 

归来 Foo 类的习性

>>> class Foo:
  def do_foo(self):
    ...

  def do_bar(self):
    ...

>>> f = getattr(foo_instance, 'do_' + opname)
>>> f()

总结

如上便是那篇小说的全体内容了,希望本文的开始和结果对大家的读书也许干活能拉动一定的赞助,要是分外大家能够留言交换,谢谢大家对帮客之家的支撑。

参考

Calling a function of a module from a string with the function's name in Python

How do I use strings to call functions/methods?

前言 本文首要给我们介绍了关于Python用字符串调用函数或方法的连锁内容,分享...

getattr()那个主意最根本的意义是促成反射机制。也便是说能够透过字符串获取形式实例。  传入分裂的字符串,调用的主意不均等。

原型:getattr(对象,方法名)

协助实行前行,与君共勉,

Linux and python学习沟通3群新开,招待加入,一齐学习.qq 3群:563227894

 getattr(pyMethod(),'out%s'%str)()  注意pyMethod()和最后的()   这里之所以这么写pyMethod()加括号是实例化类对象,最后的括号,因为getattr函数反射后,是一个方法对象。

 

 

举个栗子:

运维结果:

C:Python27python.exe D:/weixin/python_getattr.py
this is number
this is string
this is date

Process finished with exit code 0
#coding=utf-8

class pyMethod(object):
    def outstr(self):
        print('this is string')

    def outint(self):
        print('this is number')

    def outdate(self):
        print('this is date')


if __name__=="__main__":
    str = 'int'
    getattr(pyMethod(),'out%s'%str)()     
    str = 'str'
    getattr(pyMethod(),'out%s'%str)()
    str = 'date'
    getattr(pyMethod(),'out%s'%str)()

 

 

那样的话,想想是还是不是用途比较多,笔者能够把艺术名配置到文件中,读取时选拔getattr动态去调用。

Linux and python学习调换1,2群已满.

不前进,不倒退,甘休的气象是尚未的.

本文由mg游戏平台手机版发布于编程知识,转载请注明出处:传入的方法名不同,通常用来执行一个字符串表

关键词:

上一篇:没有了

下一篇:长连接调用方式,它底层基于engine.io