首页 > 其他分享 >反射

反射

时间:2024-01-05 20:48:42浏览次数:17  
标签:反射 name self object print age

【一】反射

【1】什么是反射

  • 反射是一种程序可以访问、检测和修改其本身状态或行为的能力。
  • 在 Python 中,反射主要指通过字符串的形式操作对象的属性。

【2】Python中的反射

  • 通过字符串的形式操作对象相关的属性。
  • python中的一切事物都是对象(都可以使用反射)

【二】反射方法

【1】反射方法介绍

  • getattr(object, name[, default])
    • 获取对象的属性值,如果属性不存在,可提供默认值。
  • hasattr(object, name)
    • 判断对象是否具有指定属性
  • setattr(object, name, value)
    • 设置对象的属性值
  • delattr(object, name)
    • 删除对象的属性

【2】反射方法使用

  • hasattr(object,name)
  • setattr(object,name)
class Person:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def run(self):
        print(f'self.nameis running')
    def func(self,name,age):
        if hasattr:
            return getattr(self,name,age)
        else:
            setattr(self,name,age)
            print('设置完成')
            print(self,name,age)


person=Person('hope',18)
# print(getattr(person,'name'))
# print(getattr(person,'age'))
# print(getattr(person,'run'))
# print(hasattr(person,'name'))
# print(hasattr(person,'age'))

def func(self, name, age):
    if hasattr:
        return getattr(self, name, age)
    else:
        setattr(self, name, age)
        print('设置完成')
        return func(self, name, age)

print(func(person, 'name', 'hope'))
  • delattr(object,name)

    删除对象的属性

  • 反射当前模块中的吃成员

【三】反射的好处

  • 反射的好处就是,可以事先定义好接口,接口只有在被完成后才会真正执行,这实现了即插即用,这其实是一种‘后期绑定’,意味着可以在程序运行过程中动态地绑定接口的实现。

  • 这种灵活性使得程序更容易扩展和维护

标签:反射,name,self,object,print,age
From: https://www.cnblogs.com/banchengyanyu/p/17948031

相关文章

  • 反射
    反射在Python中,反射是指在运行时获取对象的信息,包括对象的属性和方法,以及动态地操作这些属性和方法。在面向对象编程中,反射允许你在运行时检查类和对象的信息,而不是在编写代码时硬编码这些信息。(1)获取对象属性值和方法/调用getattr()使用getattr()函数可以获取对象的属......
  • python面向对象之派生、组合、抽象类、反射
    【派生】在子类派生的新方法中如何重用父类的功能?  【组合】(定义) (案例) (组合和继承的区别) 【抽象类】(定义) (案例) 实例化 (总结) 【反射】什么是反射 如何反射 实现反射机制的步骤 解决办法 ......
  • 【反射】反射获取私有字段小记
    问题://直接按类字面量获取Class<?>myClass=ClassTestA.class;//全类名反射获取Class<?>myClass=Class.forName("com.cambrianwenjie.demo.ClassTestA");//获取私有字段FieldprivateField=myClass.getDeclaredField("name");//设置私有字段可访问priva......
  • Java反射,看完就会用
    什么是反射在说反射概念之前,我们先说另外2个概念:编译期和运行期。编译期:编译期是源代码从文本形式转换为字节码的过程,这发生在Java代码被JVM执行之前。在编译期,编译器对源代码进行语法检查、类型检查、变量名解析等操作,确保代码符合Java的语法规则,并将其编译成字节码(.class文......
  • Java反射
    一、获取Class对象1、调用运行时类的.class属性ClassstuClass=Student.class;2、调用运行时类的getClass方法Students=newStudent();ClassstuClass=s.getClass();3、调用Class类的静态方法:forName(StringclassPath)【该种方法用的多】ClassstuClass=Clas......
  • 【类型转换】使用c#实现简易的类型转换(Emit,Expression,反射)
    引言哈喽。大家好,好久不见,最近遇到了一个场景,就是在FrameWork的asp.netmvc中,有个系统里面使用的是EntityFramework的框架,在这个框架里,提供了一个SqlQuery的方法,这个方法很好用啊,以至于在EFCORE8里面又添加了回来,不过不知道性能怎么样,我遇到的场景是通过SqlQuery查询的时......
  • 十九,反射
    //断言模式:10+10=30@TestpublicvoidtestAdd(){  Assert.assertEquals(20,newJiSuanQi().add(10,10));}  @Ignore//忽略该函数  @Test(timeout=3000)//单位:毫秒  publicvoidtestRun(){    //while(true){    //  ......
  • 反射
    公共函数的调用Class<A>clazz=A.class;通过反射创建对象获取函数对象try{Methodmethod=clazz.getMethod("m1");//形参类型Objecto=clazz.newInstance();//JDK9中过时了调用空参函数Objectinvoke=method.invoke(o);//实参System.out.println("invo......
  • Java反射
    一、反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解......
  • 深入探讨Java反射:解析机制与应用场景
    当谈及Java编程语言的强大功能时,反射(Reflection)是一个不可忽视的特性。反射允许程序在运行时检查和操作其自身的结构,这为开发者提供了一种动态获取信息和执行操作的途径。在本篇博客中,我们将深入探讨Java反射的原理、用法以及一些实际场景中的应用。什么是反射?反射是Java的一种......