python的反射机制
2022/6/25 1:19:41
本文主要是介绍python的反射机制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、什么是反射
反射就是通过字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动
可使用反射的地方:
1、反射类中的变量 : 静态属性,类方法,静态方法
2、反射对象中的变量、对象属性、普通方法
3、 反射模块中的变量
4、反射本文件中的变量
getattr(核心)
判断类、对象或者模块中是否有相应的属性或方法。用法:getattr(obj,str,default=None) 判断obj中是否有str属性,有就返回,没有时有传入第三参数就返回第三参数,没有就报错。
class A: name = 'zs' age = 18 print(getattr(A,'name')) print(getattr(A,'language','notfound'))
settattr
设置属性。第三参数为新的属性值
class A: name = 'zs' age = 18 setattr(A,'name','ls') setattr(A,'language','Chinese') print(getattr(A,'name')) print(getattr(A,'language','notfound'))
hasattr
判断时候有某个属性,有就返回True,没有就返回False
class A: name = 'zs' age = 18 if hasattr(A,'name'): print(getattr(A,'name'))
delattr
删除某个属性
class A: name = 'zs' age = 18 delattr(A,'name') print(hasattr(A,'name'))
python的四个重要内置函数:getattr
、hasattr
、delattr
和setattr
较为全面的实现了基于字符串的反射机制。他们都是对内存内的模块进行操作,并不会对源文件进行修改。
反射本文件
sys.modulses[__ name__]就是本文件对象。
import sys class A: def __repr__(self): return '666' if hasattr(sys.modules[__name__],'A'): print(getattr(sys.modules[__name__],'A')())
这篇关于python的反射机制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Python基础编程
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南