学习python第十一天 反射、动态加载模块
2021/4/7 3:03:41
本文主要是介绍学习python第十一天 反射、动态加载模块,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
反射,主要指程序可以访问、检测和修改它本身状态或者行为的一种能力(自省)
可以通过字符串的形式来操作对象的属性
class Person:
def __init__(self,name,age):
self.name = name
self.age = age
p = Person("jack",12)
想判断类中是否有某个属性p.name直接调用了没有的话报错,所以这种方法无法判断。需要用字符串形式来操作对象的属性
if hasattr(p,"name2") #hasatter方法是反射的一个方法,判断类中是否有这个属性,返回布尔值。第一个参数是实例,第二个参数是加了引号的属性名称
print("123456") #如果存在打印123456 ,不存在不打印
共有四个方法:
hasattr():判断
getattr():获取
setattr():赋值
delattr():删除
class Person:
def run(self):
print("running on the road and seeing the pretty girl!")
user_command = input(>>:).strip( )
if hasattr(p,user_command):
func = getattr(p,user_command) #如果函数中有输入的函数名,执行的话就需要将函数赋值,要不然无法执行
func() #执行
setattr:
class Person:
def __init__(self,name):
self.name = name
p = Person("jack")
setattr(p,"age",12)
print(p.age) #只存在实例中,类中没有这个属性
添加方法(函数):
def walk(self): #将需添加的函数按着类中的函数格式写出
print(slef.name)
setattr(p,"func",walk) #第二个参数是赋进去的函数名,第三个参数是被赋进的函数名
p.func(p) #记得调用的时候需要将实例传入才行
类也是个对象,也可以添加
删除delattr:
delattr(p,"age")
动态加载模块:即不在最开始import加载模块,用的时候再加载
这个学的就是一个模块加载的方法,简单一行代码
import importlib
importlib.import_moudle("文件名")
这篇关于学习python第十一天 反射、动态加载模块的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 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项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器