Python面向对象编程-反射 每日看点

2023-04-21 16:30:20 来源: 腾讯云


(资料图片仅供参考)

在Python中,反射是一种动态访问和修改对象属性和方法的机制。通过反射,我们可以在运行时获取对象的属性和方法,以及修改它们的值。反射可以帮助我们编写更灵活、更通用、更易维护的代码,例如实现通用的配置文件解析、ORM框架、远程调用等。

Python中的反射主要包括以下几个函数和方法:

dir(obj):返回对象的所有属性和方法的列表。getattr(obj, name[, default]):获取对象的指定属性或方法,如果属性或方法不存在则返回默认值或引发AttributeError异常。setattr(obj, name, value):设置对象的指定属性或方法的值。delattr(obj, name):删除对象的指定属性或方法。

下面是一个简单的反射示例,演示如何使用反射来访问和修改对象的属性和方法:

class MyClass:    x = 1    y = 2        def foo(self):        print("foo")        obj = MyClass()        # 使用dir函数获取对象的属性和方法列表print(dir(obj))# 使用getattr函数获取对象的属性和方法print(getattr(obj, "x"))         # 输出:1print(getattr(obj, "y"))         # 输出:2getattr(obj, "foo")()           # 输出:foo# 使用setattr函数设置对象的属性和方法setattr(obj, "x", 10)setattr(obj, "y", 20)setattr(obj, "foo", lambda self: print("bar"))print(obj.x)                     # 输出:10print(obj.y)                     # 输出:20obj.foo()                        # 输出:bar# 使用delattr函数删除对象的属性和方法delattr(obj, "x")delattr(obj, "y")delattr(obj, "foo")print(dir(obj))                  # 输出:[]

在上面的示例中,我们定义了一个名为MyClass的类,它有两个属性x和y和一个方法foo。然后,我们创建了一个MyClass的对象obj。

首先,我们使用dir函数获取对象的所有属性和方法,并打印输出它们的列表。

接着,我们使用getattr函数获取对象的属性和方法,使用字符串参数指定属性和方法的名称。如果属性或方法不存在,则getattr函数会引发AttributeError异常,可以使用默认值参数避免异常。我们还演示了如何调用对象的方法。

然后,我们使用setattr函数设置对象的属性和方法的值,使用字符串参数指定属性和方法的名称。如果属性或方法不存在,则setattr函数会创建一个新的属性或方法。我们还演示了如何设置对象的方法的值,并使用新的lambda表达式替换原有的方法。

最后,我们使用delattr函数删除对象的属性和方法,使用字符串参数指定属性和方法的名称。如果属性或方法不存在,则delattr函数会引发AttributeError异常。

关键词:

精选 导读

烟台市首个幼儿体育研究示范基地揭牌 福山兜余幼儿园的幼儿

烟台市首个幼儿体育研究示范基地揭牌福山兜余幼儿园的幼儿体育游戏,火出圈了!

发布时间: 2023-04-21 16:07
要闻   2023-04-21

标普料中国房地产的不良贷款在明年见顶 涉约6600亿元

未来两年涉及房地产的不良贷款率达到4 7%,2025年才回落至4%。

发布时间: 2023-04-21 15:20
要闻   2023-04-21

“狂飙”的库迪咖啡,需要放慢脚步 全球热点评

提升品质,做好服务,很关键。

发布时间: 2023-04-21 15:28
要闻   2023-04-21

简讯:“后巴菲特”时代的伯克希尔:加仓“日本”成为一个考

实习记者|田佳宁按照“巴菲特指标”,美国股市可能已经处于历史的高点。如何推进风险分散是着眼于“后巴菲

发布时间: 2023-04-21 15:29
要闻   2023-04-21

视频|一封火红的感谢信背后,是一场无声地寻娃 微资讯

视频|一封火红的感谢信背后,是一场无声地寻娃

发布时间: 2023-04-21 15:04
要闻   2023-04-21

热点 推荐

Python面向对象编程-反射 每日看点

在Python中,反射是一种动态访问和修改对象属性和方法的机制。通过反射,我们可以在运行时获取对象的属性和

发布时间: 2023-04-21 16:30
IT   2023-04-21

烟台市首个幼儿体育研究示范基地揭牌 福山兜余幼儿园的幼儿

烟台市首个幼儿体育研究示范基地揭牌福山兜余幼儿园的幼儿体育游戏,火出圈了!

发布时间: 2023-04-21 16:07
要闻   2023-04-21

菏泽:抢抓关键“窗口期”做好小麦赤霉病防控 最新资讯

菏泽:抢抓关键“窗口期”做好小麦赤霉病防控

发布时间: 2023-04-21 16:13
科技   2023-04-21

全网打卡淄博烧烤:短视频造神、社交平台种草和网红城市的网

全网打卡淄博烧烤:短视频造神、社交平台种草和网红城市的网感

发布时间: 2023-04-21 16:24
IT   2023-04-21

外观内饰更独特 奔驰EQS高定特别版官图

[本站新车官图]日前,梅赛德斯-奔驰发布了EQSManufakturSignatureEdition官图,该车在EQSManufaktur基础上

发布时间: 2023-04-21 16:05
汽车   2023-04-21

2023上海车展:雷克萨斯RZ越野概念车 环球速讯

[本站新车首发]在2023上海车展期间,雷克萨斯RZOutdoor概念车正式亮相,它展示了这款纯电动SUV在越野方面的

发布时间: 2023-04-21 16:04
汽车   2023-04-21

电动时代,丰田bZ系列大有可为-每日视点

这届上海车展,事情变得有趣了起来。作为2023年全球第一场A级车展,上海车展这两天成为全球汽车行业聚光灯

发布时间: 2023-04-21 16:10
汽车   2023-04-21

​两款“全球首秀”车型加持上海车展,丰田电动化按下加速键

在经历了两年的极度内卷、大浪淘沙之后,从2021年上海车展挺到2023年上海车展的品牌似乎又少了一波,历经初

发布时间: 2023-04-21 16:14
汽车   2023-04-21

全球今日讯!半岛新村社区开展爱国卫生月活动

半岛新村社区开展爱国卫生月活动

发布时间: 2023-04-21 15:52
国内   2023-04-21

告别低效办公,你可以选择一支科大讯飞智能录音笔

同样面对一天24小时,有些人能够把工作做得井井有条,还有空余时间来享受生活,而有的人却终日忙忙碌碌,却拿不出可圈可点的成绩。之所以会

发布时间: 2023-04-21 16:04
财经   2023-04-21

标普料中国房地产的不良贷款在明年见顶 涉约6600亿元

未来两年涉及房地产的不良贷款率达到4 7%,2025年才回落至4%。

发布时间: 2023-04-21 15:20
要闻   2023-04-21

报告:“鸡娃”、“自鸡”排在国民阅读10大场景前2位,国民

近日,当当网发的《2023国民阅读洞察》显示,过去一年,国民对中小学用书、童书的消费量占比超过40%,占全

发布时间: 2023-04-21 15:15
科技   2023-04-21

浪潮云总经理颜亮:公共数据应加大开发力度和政策支撑 成为

数字科技快速发展,技术融合态势愈加明显,数据价值凸显,数据资产逐渐成为驱动行业转型变革的核心资源。

发布时间: 2023-04-21 15:13
IT   2023-04-21

“狂飙”的库迪咖啡,需要放慢脚步 全球热点评

提升品质,做好服务,很关键。

发布时间: 2023-04-21 15:28
要闻   2023-04-21
发布时间: 2023-04-21 15:29
科技   2023-04-21

SpaceX星舰首飞升空后爆炸,马斯克的“火星梦”到底有多难?

马斯克耗资30亿美金,放了史上最贵的“烟火”。

发布时间: 2023-04-21 15:32
IT   2023-04-21

简讯:“后巴菲特”时代的伯克希尔:加仓“日本”成为一个考

实习记者|田佳宁按照“巴菲特指标”,美国股市可能已经处于历史的高点。如何推进风险分散是着眼于“后巴菲

发布时间: 2023-04-21 15:29
要闻   2023-04-21

岸田文雄:七国集团领导人峰会将讨论ChatGPT,须制定国际规则

共同社4月19日消息,日本首相岸田文雄19日表示,七国集团(G7)领导人将在5月G7广岛峰会期间讨论讨论生成性

发布时间: 2023-04-21 15:20
科技   2023-04-21

两名俄罗斯宇航员完成太空行走任务|焦点热文

中新社莫斯科4月19日电(记者田冰)俄罗斯国家航天集团19日宣布,国际空间站第69长期考察组的两名俄罗斯宇航

发布时间: 2023-04-21 15:13
IT   2023-04-21

环球资讯:售10.89万起 新款长安UNI-V正式上市

[本站新车上市]4月21日,新款长安UNI-V正式上市,新车共推出6款车型,售价区间为10 89-13 99万元。作为年度

发布时间: 2023-04-21 15:20
汽车   2023-04-21