所谓动态函数名,就是使用时完全不知道是叫什么名字,可以由用户输入那种。

一般人习惯性会想到eval或exec, 但是众所周知,这样的写法不安全而且容易引起问题,而且不pythonic。而且使用时必须把函数定义写在动态函数名调用之前。

def _phyCPU():
print "ok"
values = ["_phyCPU"]#, "_proCPU", "_cpuModel"]
for value in values:
eval(value)()

所以得采用更好的方式,对于在类里的动态函数名,可以使用getattr的方式。

class A:
def __init__(self):
self.name = 'zhangjing'
   #self.age='24'
def method(self):
print"method print" Instance = A()
print getattr(Instance , 'name, 'not find') #如果Instance 对象中有属性name则打印self.name的值,否则打印'not find'

但是有时候我们写的函数不在类里,这种情况下需要调用动态函数名,可以使用locals()

def foo():
print "ok"
locals()["foo"]()

 

最新文章

  1. 【hrbust2293】棋盘村
  2. A Plug for UNIX 分类: POJ 图论 函数 2015-08-10 14:18 2人阅读 评论(0) 收藏
  3. 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客
  4. xcode 工具 alcatraz---备用
  5. VMware虚拟机服务的vmware-hostd自动启动和停止
  6. 初涉算法——C++
  7. JUnit 异常处理
  8. 8天入门docker系列 —— 第一天 docker出现前的困惑和简单介绍
  9. algorithm的基本注意事项
  10. [cookie篇]cookie-parser之parser.js
  11. Rust 的安装和使用举例
  12. RabbitMQ--Publish/Subscribe(三)
  13. CAS 5.1.x 的搭建和使用(四)—— 配置使用HTTP协议访问的服务端
  14. zuoyeQAQ
  15. eclipse中android开发怎么修改xml文件字体大小
  16. C++常见错误坑洞
  17. 批处理for命令详解(转)
  18. 【JUC源码解析】AQS
  19. [codeforces/gym/101350/L]维护“凸包”
  20. squid 代理服务

热门文章

  1. 最长上升子序列LIS(51nod1134)
  2. Java NIO -- 直接缓冲区与非直接缓冲区
  3. android关闭日志
  4. A1067. Sort with Swap(0,*)
  5. isinstance和issubclass,__getattribute__,__getitem__,__setitem__,delitem__,__str__(三十五)
  6. Ansible playbook 批量修改服务器密码 先普通后root用户
  7. java基础基础总结----- 常用DOS命令(一)
  8. P4147 玉蟾宫
  9. my soft
  10. 多目标遗传算法 ------ NSGA-II (部分源码解析)父、子种群合并 merge.c