python判断模块(类、对象)是否有该成员or获取模块成员(反射实例)

引入模块,获取该模块成员,如果是变量则打印变量,如果是函数则执行函数

**hasattr(module, member)**:判断module模块中是否包含member成员

**getattr(module, member)**:获取module模块中的member成员

**setattr(module, member, value)**:在module模块中设置member成员并将赋值为value(value可为函数)

**delattr(module, member)**:删除module模块中的member成员

**isinstance(func, FuncionType)**:判断func是否是一个函数,FunctionType需要引入该模块

模块my_module文件代码:

1
2
3
4
5
6
7
8
9
10
name = 'Tony'
city = '中国 - 上海'
def run():
return '跑的好快啊!!!'

def work():
return '工作好累啊!!!'

def play():
return '玩的开心啊!!!'

引入模块代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import my_moudle as m
from types import FunctionType
while 1:
handle = input('请输入您要的操作:')
# 判断该模块是否有该成员
if(hasattr(m, handle)):
# 获取该成员
member = getattr(m, handle)

# 判断是否是一个函数
if isinstance(member, FunctionType):
print(member())
else:
print(member)
else:
print('没有您要的操作')
break

面向对象反射实例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Obj:
name = '托尼'
def func(self):
print('成员方法')

v1 = getattr(Obj, 'name')
print(v1)
v2 = getattr(Obj, 'func')
v2(self)

o = Obj()
v3 = getattr(o, 'name')
print(v3)
v4 = getattr(o, 'func')
v4()