热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python获取实例的方法列表,并运行方法

具体需求是这样的,有一个类,是用作检查运行环境的,比如python版本,java_home等,具体如下:classFlumeEnv(object):#useaclasstochec

具体需求是这样的,有一个类,是用作检查运行环境的,比如python版本,java_home等,具体如下:

class FlumeEnv(object):
# use a class to check flume environment
def __init__(self, zk_ip):
self._zk_ip = zk_ip
def check(self):
flag = True
# run all method statswith '_check'
def _check_zk_connection(self):
try:
telnetlib.Telnet(self._zk_ip, 2181, 5)
return True
except:
return False
def _check_java_home(self):
return True if 'JAVA_HOME' in os.environ else False

google了下找到了解决方法,其中用到了dir和getattr。

代码示例:

class A(object):
def foo(self):
print 'in foo'
def _foo2(self):
print 'in private foo2'

在ipython中,getattr获得的已经是bound到a的方法了,所以可以直接使用:

In [79]: dir(a)
Out[79]:
['__class__',
'__delattr__',
'__dict__',
'__doc__',
'__format__',
'__getattribute__',
'__hash__',
'__init__',
'__module__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__weakref__',
'_foo2',
'foo']
In [80]: [i for i in dir(a) if i.startswith('foo')][0]
Out[80]: 'foo'
In [81]: getattr(a, 'foo')
Out[81]: >
In [82]: getattr(a, 'foo')()
in foo

推荐阅读
author-avatar
蛋农老张
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有