澳门新蒲京娱乐


内建函数getattr工厂模式新蒲京官方下载:,多进程并发机制

索引阐述系列五,MSSQL数据库表索引碎片整理优化性能【澳门新蒲京娱乐】

python示例代码【新蒲京官方下载】,内建函数getattr工厂模式

getattr()这些法子最要紧的功能是促成反射机制。也正是说能够透过字符串获取形式实例。  传入不相同的字符串,调用的不二法门不等同。

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

前言

本文主要给大家介绍了有关Python用字符串调用函数或措施的相干内容,分享出来供我们参考学习,下边来三只看看详细的牵线:

先看3个例子:

>>> 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()
经常用来推行1个字符串表明式,并再次回到表明式的值。在此地它将字符串转换来对应的函数。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(对象,方法名)

 

举个栗子:

pyMethod类下定义了八个办法,getattr(pyMethod(),’out%s’%str)()  
传入的章程名分化,调用差异的章程。些处方法名为字符串。

那样的话,想想是还是不是用途很多,小编得以把艺术名配置到文件中,读取时接纳getattr动态去调用。

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

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图