首页 > 编程语言 > 详细

python-反射

时间:2020-05-12 18:06:33      阅读:46      评论:0      收藏:0      [点我收藏+]
根据字符串类型
1.反射对象的 实例变量
2.反射类的 静态变量/绑定方法/其他方法
3.模块中的所有变量
被导入的所有模块


# 1.反射对象的 实例变量/绑定方法
# 2.反射类的 静态变量/其他方法
# 3.模块中的 所有变量
# 被导入的模块
# 当前执行的py文件 - 脚本

class A:
    Role = ‘治疗‘

    def __init__(self):
        self.name = ‘alex‘
        self.age = 84

    def func(self):
        print(‘wahaha‘)
        return 666


a = A()
print(getattr(a, ‘name‘))  # 反射对象的实例变量
print(getattr(a, ‘func‘)())  # 反射对象的绑定方法
print(getattr(A, ‘Role‘))
import a  # 引用模块中的任意的变量

print(getattr(a, ‘sww‘), a.sww)
getattr(a, ‘sww‘)()
print(getattr(a, ‘lst‘), a.lst)
print(getattr(a, ‘dic‘), a.dic)
print(getattr(a, ‘we‘), a.we)
import sys  # 反射本模块中的名字

cat = ‘小a‘
dog = ‘小b‘


def pig():
    print(‘小p‘)


print(getattr(sys.modules[‘__main__‘], ‘cat‘))
print(getattr(sys.modules[‘__main__‘], ‘dog‘))
getattr(sys.modules[‘__main__‘], ‘pig‘)()

 

进阶: 

hasattr(a, ‘func‘):  # 判断某个类/对象能不能反射.return True/False
callable(obj) 判断对象是否可调用 return True.False
 
class A:
    Role = ‘治疗‘

    def __init__(self):
        self.name = ‘alex‘
        self.age = 84

    def func(self):
        print(‘wahaha‘)
        return 666


a = A()
print(hasattr(a, ‘sex‘))
print(hasattr(a, ‘age‘))
print(hasattr(a, ‘func‘))
if hasattr(a, ‘func‘):  # 判断某个类/对象能不能反射.return True/False
    # callable(obj) 判断对象是否可调用 return True.False
    if callable(getattr(a, ‘func‘)):
        getattr(a, ‘func‘)()

 

python-反射

原文:https://www.cnblogs.com/qiuyubai/p/12877527.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!