python_反射——根据字符串获取模块中的属性
1.获取当前模块中的属性
class Person(object): def __init__(self,name,age): self.name = name self.age = age p = Person('wdc',22) import sys q = sys.modules[__name__] #获取模块本身,并赋值给q if hasattr(q,'p'): #查看当前模块下是否有名字叫“p”的属性 print(getattr(q,'p')) #获取当前模块的名字叫“p”的属性 print(p) #打印p和上面做比较
打印输出后发现通过字符串获取的,和直接打印的模块相同。
2.从其他模块导入方法
test_mod.py
def hi(): print('Hi')
test.py
import test_mod #导入其他模块 if hasattr(test_mod, 'hi'): #判断test_mod模块是否有名字为“hi”的方法 f = getattr(test_mod, 'hi') #获去test_mod模块中名字叫“hi”的方法并赋值给f f() #执行获取的方法 setattr(test_mod,'name','wdc') #为方法添加名字为“name”的属性,并赋值为“wdc” print(test_mod.name) #打印输出为模块添加的属性
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下