面向对象--反射
--反射
可以用过字符串的形式来操作(增删改查)一个对象的属性
有几种方法
getattr()获取
hasattr()判断
setattr()赋值
delattr()删除
class Person(object): def __init__(self,name,age): self.name = name self.age = age p = Person("alex",22) if hasattr(p,"name2"): #hasattr()判断对象P中是否存在name2的属性 print("存在name2") else: print('不存在name2') print(getattr(p,"age")) setattr(p,"sex","male") print(p.sex)
应用场景:
在django的框架中的cbv的视图中的dispatch()方法,就是用反射来判断http请求的类型
def dispatch(self, request, *args, **kwargs): # Try to dispatch to the right method; if a method doesn't exist, # defer to the error handler. Also defer to the error handler if the # request method isn't on the approved list. if request.method.lower() in self.http_method_names: handler = getattr(self, request.method.lower(), self.http_method_not_allowed) else: handler = self.http_method_not_allowed return handler(request, *args, **kwargs)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人