首页 > 其他分享 >21. 反射

21. 反射

时间:2024-10-23 19:58:21浏览次数:3  
标签:反射 21 对象 age getattr print 成员 name

一、什么是反射

  Python 是一种动态语言,而反射(reflection)机制被视为动态语言的关键。反射机制指的是在程序的运行过程中,对于任意一个类,都可以知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意方法和属性。这种动态获取程序信息以及动态调用对象的功能称为 反射机制

  反射,本质上就是通过字符的形式去操作对象/模块中的成员。在 Python 中,我们可以通过四个内置函数去实现反射相关的功能。

getattr(object, name)                # 获取对象中的成员
getattr(object, name, default)       # 获取对象中的成员,如果没有则返回default指定的指
setattr(object, name, value)         # 设置对象中的成员
hasattr(object, name)                # 判断对象的成员是否存在
delattr(object, name)                # 删除对象的成员是否存在
class Person:

    def __init__(self,name,age):
        self.name = name
        self.age = age
  
    def show_info(self):
        print("你猜猜我是谁?")

p = Person("Sakura",10)

if hasattr(p,"name"):               # 判断对象的成员是否存在
    name = getattr(p,"name",None)   # 获取对象中的成员
    print(name)

if hasattr(p,"age"):                # 判断对象的成员是否存在
    age = getattr(p,"age")          # 获取对象中的成员
    print(age)

    setattr(p,"age",12)             # 设置对象中的属性
    age = getattr(p,"age")          # 获取对象中的成员
    print(age)

    delattr(p,"age")                # 删除对象中的属性值
    print(p.__dict__)

if hasattr(p,"show_info"):
    func = getattr(p,"show_info")
    func()

    setattr(p,"show_info",lambda : "我是一个无忧无虑的人")

    func = getattr(p,"show_info")
    msg = func()
    print(msg)

标签:反射,21,对象,age,getattr,print,成员,name
From: https://www.cnblogs.com/FlurryHeart/p/18498260

相关文章

  • P11218 【MX-S4-T2】「yyOI R2」youyou 不喜欢夏天
    算法博弈类型的题这个题属于最优解法的问题最初可以看出\(\rm{yy}\)交换的列一定是一黑一白的,不然无意义考虑\(\rm{youyou}\)怎么选对于两个都是黑的情况,显然是都要选的,这种贡献yy影响不了对于两个都是白的情况,显然是只选一个,最大化贡献对于一白一黑的情况......
  • QILSTE H6-C210LB高亮蓝光LED灯珠 发光二极管LED
    在LED技术的璀璨星河中,H6-C210LB型号的高亮蓝光LED,以其卓越的性能和精确的参数设定,成为了众多电子设计中的耀眼明星。这款LED,尺寸仅为2.1x0.6x1.0mm,却能在紧凑的空间中提供明亮的蓝光,其透明弧面胶体的设计,保证了光线的均匀分布和高透明度。**参数的精确性是H6-C210LB的核心特......
  • QILSTE H6-C210KYG高亮黄绿光LED
    在LED技术的多彩世界中,H6-C210KYG型号的高亮黄绿光LED以其卓越的性能和精确的参数设定,成为了众多电子设计中的璀璨明星。这款LED,尺寸仅为2.1x0.6x1.0mm,却能在紧凑的空间中提供明亮的黄绿光,其透明弧面胶体的设计,保证了光线的均匀分布和高透明度。**参数的精确性是H6-C210KYG的......
  • QILST5E H6-C210HR高亮红光LED灯珠 发光二极管LED
    在LED技术的璀璨星河中,H6-C210HR型号的高亮红光LED以其卓越的性能和精确的参数设定,成为了众多电子设计中的耀眼明星。这款LED,尺寸仅为2.1x0.6x1.0mm,却能在紧凑的空间中提供明亮的红光,其透明弧面胶体的设计,保证了光线的均匀分布和高透明度。**参数的精确性是H6-C210HR的核心特......
  • QILSTE H6-C210FO高亮橙光LED灯珠 发光二极管LED
    在LED照明技术领域,H6-C210FO型号的高亮橙光LED以其卓越的性能和精确的参数设定,成为了众多电子设计中的璀璨明星。这款LED,尺寸仅为2.1x0.6x1.0mm,却能在紧凑的空间中提供明亮的橙光,其透明弧面胶体的设计,保证了光线的均匀分布和高透明度。**参数的精确性是H6-C210FO的核心特点。*......
  • 计算机毕业设计项目推荐,基于协同过滤算法的短视频推荐系统设计与实现30213(开题答辩+程
    摘 要现阶段,社会的发展和科技的进步,以及大数据时代下纷繁数据信息的融合,使得人们在生产及生活过程中,都将会接收到各种类型的数据信息,而通过计算机技术与网络技术,则能够将众多人们所不了解或不常用的信息,以简单的模式转化并传递给人们,使得人们的生产及生活质量得以显著提升......
  • 题解:P11215 【MX-J8-T3】水星湖
    依旧是模拟赛赛题。HintAnalysis首先你注意到两棵相邻的树是一定不会死的,所以可能会死的只有自己种下去的树,队列维护。接着考虑对于每个位置,\(\text{bfs}\)维护一个最小的长出树的时间\(vis[i][j]\),最后暴力统计答案即可。具体细节看注释。Code#include<bits/stdc++.h>......
  • 适合数据库管理者的七个空间数据库(在2021版本中)
    适合数据库管理者的七个空间数据库(在2021版本中)最新推荐文章于 2024-09-0610:57:43 发布fmechina于2022-01-1116:43:00发布阅读量8.6k收藏23点赞数3分类专栏:默认分类文章标签:数据库postgresqldatabase  默认分类专栏收......
  • AOT漫谈专题(第六篇): C# AOT 的泛型,序列化,反射问题
    一:背景1.讲故事在.NETAOT编程中,难免会在泛型,序列化,以及反射的问题上纠结和反复纠错尝试,这篇我们就来好好聊一聊相关的处理方案。二:常见问题解决1.泛型问题研究过泛型的朋友应该都知道,从开放类型上产下来的封闭类型往往会有单独的MethodTable,并共用EEClass,对于值类型......
  • P7909 [CSP-J 2021] 分糖果
    结论题题面概括请在$[l,r]$中找出一个数$k$,使得$n$%$k$的值最大.思路当$n\le10^9$时,说明$\Theta(n)$的算法已经结束了.所以,接下来是结论推理.当$\left\lfloor\frac{l}{n}\right\rfloor=\left\lfloor\frac{r}{n}\right\rfloor$时,$r$%$n$的......