python的自省
什么是自省
在计算机编程中,自省是指这种能力:检查某些事物以确定它是什么、它知道什么以及它能做什 么。自省向程序员提供了极大的灵活性和控制力。
有时我们要访问某个变量或是方法时并不知道到底有没有这个变量或方法,所以就要做些判断。判断是否存在字符串对应的变量及方法。
我们知道访问变量时是不能加引号的,否则会被当成字符串处理。如果要通过字符串找到对应的变 量,那该怎么办呢
自省的四种方法
getattr(obj, 'name'): 获取成员
根据字符串去获取obj对象里的对应的方法的内存地址
hasattr(obj, 'name'): 检查是否含有成员
判断一个对象obj里是否有对应的name_str字符串的方法 •
import sc #同文件夹下创建的一个.py文件
#python的自省
#xx.xx的形式都能自省出来
print(hasattr(sc,'a')) #判断sc里有没有a属性,为True表示有属性,为False表示没有,这里的sc是个模块
print(hasattr(sc,'b'))
print(getattr(sc,'a')) #获取sc里面的属性a
print(setattr(sc,'b','scbbbb')) #设置sc里面的属性,b为scbbbb,返回值为None
print(getattr(sc,'b'))
print(delattr(sc,'b')) #删除属性,返回值为None
print(hasattr(sc,'b'))
print(sc.a)
#接受用户从键盘的输入,可以无