python之-- 反射
2024-08-31 22:47:16
反射定义:通过字符串映射或者修改程序运行时的状态,属性,方法。
方法有如下4个:
1:getattr(object,name,default=None):根据字符串去获取obj对象里的对应的方法的内存地址,如果是属性则会直接返回值。
2:hasattr(object,name):判断对象object里是否存在name字符串的方法映射
3:setattr(x,y,v) ==》 x.y = v :通过字符串设置新的属性(可以重设普通属性值,也可以将函数设置为类方法)
4:delattr(x,y)
举例:
# 将这个方法动态装入类中进行调用
def bulk(self):
print('%s is yelling...' % self.name) class Dog(object):
def __init__(self,name):
self.name = name
def eat(self,food):
print('%s is eat %s' % (self.name,food)) obj = Dog('沙皮')
mess = input('请输入操作的方法:')
if hasattr(obj,mess):
#-----删除---
#delattr(obj,mess) # 模拟传入name,删除name属性
#print(obj.name) # 报错提示没有name属性
#-----以字符串打印方法值---
# fun = getattr(obj,mess) # 这里将通过getattr得到talk方法的内存地址
# fun('baba')
#-----重置属性值---
# setattr(obj,mess,'22') # 这里可以重新修改已存在的属性值
# print(getattr(obj,mess))
else: #------设置将类外面的函数引入类中----
# setattr(obj,mess,bulk) # 动态将bulk函数装入类中
# getattr(obj,mess)(obj) # 动态使用getattr方法获取输入值,然后将obj对象本身当参数传入,因为上面的bulk函数有self参数。 # -----设置动态传入属性
setattr(obj,mess,22) # 设置默认属性值,
print(getattr(obj,mess)) # 返回默认属性值22
# 可以重新设置已存在的属性值
最新文章
- QT读取文本(字符串)最后一行的方法
- 使用ajax技术实现txt弹出在页面上
- MySQL导出数据
- 【shell】条件判断式
- Golang http包下FileServer的使用
- Debian6单用户模式
- Fire Again CodeForces - 35C (BFS)
- Prometheus-配置解析
- Variables多种表达
- ElasticSearch权威指南学习(文档)
- 使用jquery方法的时候,要注意对象是哪个,否则很容易出错
- [题目] Luogu P1312 Mayan游戏
- e617. Determining the Opposite Component of a Focus Event
- JSP九大内置对象与Servlet学习笔记[转]
- Python:字符串处理函数
- js javascript 实现多线程
- Windows 7/8/10 系统下Laravel框架的开发环境安装及部署详解(Vagrant + Homestead)
- docker-It's possible that too few managers are online. Make sure more than half of the managers are online.
- 面试中关于Java虚拟机(jvm)的问题看这篇就够了
- 技巧:Vimdiff 使用(改)