Python获取实例的方法列表,并运行方法
admin
2023-07-31 01:49:43
0

具体需求是这样的,有一个类,是用作检查运行环境的,比如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

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...