首页 > 编程语言 >python反射机制

python反射机制

时间:2023-08-14 09:55:24浏览次数:34  
标签:__ 反射 name python age person 对象 机制 属性

Python 的反射机制是指在运行时获取、检查和修改对象的属性和方法。通过使用反射,我们可以动态地访问和操作对象的属性、调用方法,甚至创建新的属性和方法。

Python 提供了一些内置函数和特殊属性来实现反射机制:

  1. getattr(object, name[, default]):获取对象的属性值,如前面提到的。
  2. setattr(object, name, value):设置对象的属性值,如前面提到的。
  3. hasattr(object, name):检查对象是否具有指定的属性。
  4. delattr(object, name):删除对象的属性。
  5. dir([object]):返回对象的所有属性和方法的列表。如果没有提供对象,则返回当前作用域中的属性和方法。
  6. type(object)isinstance(object, classinfo) 和 issubclass(class, classinfo):用于检查对象的类型和类之间的关系。
  7. 特殊属性 __dict__:是一个字典,包含对象的所有属性和对应的值。
  8. 特殊属性 __getattr__ 和 __setattr__:在属性不存在或被访问/设置时调用的特殊方法,可自定义处理逻辑。

下面是一个简单的示例,展示了反射机制的基本用法:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print("Hello, I'm", self.name)

person = Person("John", 25)

# 使用 getattr 获取对象的属性值
name = getattr(person, "name")
print(name)  # 输出: John

# 使用 hasattr 检查对象是否具有指定的属性
has_age = hasattr(person, "age")
print(has_age)  # 输出: True

# 使用 setattr 设置对象的属性值
setattr(person, "age", 30)
print(person.age)  # 输出: 30

# 使用 dir 获取对象的所有属性和方法
attributes = dir(person)
print(attributes)  # 输出: ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__',
                   #        '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__',
                   #        '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',
                   #        '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age', 'name',
                   #        'say_hello']

# 使用 delattr 删除对象的属性
delattr(person, "age")
has_age = hasattr(person, "age")
print(has_age)  # 输出: False

  

标签:__,反射,name,python,age,person,对象,机制,属性
From: https://www.cnblogs.com/7dao/p/17627840.html

相关文章

  • 5个代码技巧,加速你的Python! 转载
    原文:https://mp.weixin.qq.com/s/xLIlcXfW1O8sNxGT7RvKrQ来自公众号:快学PythonPython作为一种功能强大的编程语言,因其简单易学而受到很多初学者的青睐。它的应用领域又非常广泛:科学计算、游戏开发、爬虫、人工智能、自动化办公、Web应用开发等等。而在数据科学领域中,Python是......
  • python实战练习:sorted函数排序后返回一个新列表,所以不用再套一层list函数进行转化了
        使用集合set去重后,如果想要返回结果为列表形式,不用在外层套list函数了,因为sorted排完序后会返回一个新列表。names=input().split("")print(sorted(set(names)))#不需要再套一层list函数了print(sorted(list(set(names)))) ......
  • python实战练习:对哪部分使用类型转换
         l=[]whileTrue:s=input()ifs=='0':#注意:这里是对0加引号,而不是使用int(s),如果输入'hello',int(s)会报错,所以是用字符串'0'breakelse:l.append(s)print("".join(l)) ......
  • python打包库nuitka测试 是否和c++的速度差不多
    nuitka一个打包py脚本的库原理是把py代码转成c++代码再重新编译宣传的优点是打包的程序速度快占用空间小用了一些时间了突然想测试一下性能是否和宣传的一样写了一个输出一百万以内素数个数的脚本 打包成exe结果  不打包执行 说实话挺失望还剩一个优点空间......
  • 深入解析 Spring Boot 自动配置机制
    SpringBoot作为一款广泛应用的微服务框架,以其强大的自动配置功能而闻名。这一特性能够让开发人员快速搭建和部署应用程序,无需手动繁琐的配置。在本篇博客中,我们将深入探究SpringBoot自动配置的机制,剖析其背后的原理,并通过代码示例演示如何定制自动配置。1.自动配置的核心原理......
  • 深入探究 Spring Boot 自动配置的内部机制
    SpringBoot作为一款广泛应用的微服务框架,以其强大的自动配置功能而受到瞩目。这一特性能够让开发人员快速搭建和部署应用程序,无需手动繁琐的配置。在本篇博客中,我们将深入探讨SpringBoot自动配置的内部机制,揭示其背后的原理,并通过代码示例演示如何进行自定义的自动配置。1.自......
  • 揭秘 Spring Boot 自动配置的内部机制
    SpringBoot作为一款广泛使用的微服务框架,以其强大的自动配置功能而受到瞩目。这一特性能够让开发人员快速搭建和部署应用程序,无需手动繁琐的配置。在本篇博客中,我们将深入探究SpringBoot自动配置的内部机制,剖析其背后的原理,并通过代码示例演示如何进行自定义的自动配置。1.自......
  • 深入解析 Kafka 消息传递机制及其在 Spring Boot 中的应用
    Kafka作为一款高性能的分布式消息中间件,被广泛用于构建实时数据流处理和事件驱动的架构。在本篇博客中,我们将深入探讨Kafka的消息传递机制,并结合SpringBoot框架,演示如何在应用中使用Kafka进行消息传递。1.Kafka消息传递机制Kafka使用发布-订阅模型来实现消息传递。核心......
  • Kafka 消息传递机制与 Spring Boot 集成实践
    Kafka作为一款强大的分布式消息中间件,被广泛应用于实时数据流处理和事件驱动的架构。在本篇博客中,我们将深入探讨Kafka的消息传递机制,并结合SpringBoot框架,演示如何在应用中集成和使用Kafka进行消息传递。1.Kafka消息传递机制概述Kafka使用发布-订阅模型来实现高效的消......
  • Kafka 消息传递机制深度解析与 Spring Boot 集成实践
    Kafka作为一款强大的分布式消息中间件,在实时数据流处理和事件驱动架构中扮演着关键角色。在本篇博客中,我们将深入探讨Kafka的消息传递机制,并结合SpringBoot框架,演示如何在应用中集成和使用Kafka进行消息传递。1.Kafka消息传递机制剖析Kafka采用发布-订阅模型实现高效的......