学习python第十一天 反射、动态加载模块
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了学习python第十一天 反射、动态加载模块,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1508字,纯文字阅读大概需要3分钟。
内容图文
反射,主要指程序可以访问、检测和修改它本身状态或者行为的一种能力(自省)
可以通过字符串的形式来操作对象的属性
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第十一天 反射、动态加载模块全部内容,希望文章能够帮你解决学习python第十一天 反射、动态加载模块所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。