首页 > 其他分享 >反射

反射

时间:2024-11-25 21:14:03浏览次数:2  
标签:__ 反射 self name4 test getattr print

#用于动态操作对象,但性能开销较大

class T():
    name1 = 'test1'
    name2 = 'test2'
    def __init__(self, name4):
        self.name3 = 'test3'
        self.name4 = name4
    def f1(self):
        print('f1:', self.name3)

#实例化访问
obj_t = T('name4')
print(obj_t.name1) # test1
obj_t.f1() # f1: test3

#反射
print(getattr(T, 'name1')) # test1 
print(getattr(T, 'f1')) # <function T.f1 at 0x7fc98ba06e50> 输出的对象内存地址

t = T('name4') # 获取动态属性要先实例化,否则不执行实例化的__new__和 __init__
getattr(t, 'f1')() # f1:test3  获取到动态属性可以直接加() 执行

#hasattr()  判断对象属性是否存在,常用getattr()连用
print(hasattr(t, 'name2')) # True
if hasattr(T, 'name4'): # 没有实例化,命名空间中没有name4
    print(getattr(T, 'name4'))
else:
    print('不存在')

if hasattr(t, 'name4'): # 实例化传了变量,结果为true
    print(getattr(t, 'name4'))


# 反射模块
import test


print(getattr(test, 'a')) # 1
getattr(test, 'test1')() # test1 
obj = getattr(test, 'Test2')('ttt') # 11111 获取类并实例化,执行了__init__,可分开两步写
getattr(obj, 'test2')() # test2

# setattr delattr
setattr(test, 'a', 'aaa')
print(setattr(test, 'a') # aaa , a=1 被修改
setattr(test, 'c', 'ccc')
print(getattr(test, 'c') # ccc , 没有时会新建对象
delattr(test, 'c') # 删除对象

 

# test 

a = 1
b = 2
def test1():
    print('test1')

class Test2():
    def __init__(self, c):
        self.c = c
        print('11111')
    def test2(self):
        print('test2')

 

标签:__,反射,self,name4,test,getattr,print
From: https://www.cnblogs.com/ggsdddup/p/18568735

相关文章

  • java反射笔记
    packagetest1125;publicclassclassTest{publicstaticvoidmain(String[]args){try{//获取Class对象的三种方式System.out.println("根据类名:\t"+User.class);System.out.println("根据对象:\t"......
  • 折叠光腔衰荡高反射率测量技术的matlab模拟理论分析
    折叠光腔衰荡高反射率测量技术的matlab模拟理论分析1.前言2.光腔模型3.光腔衰荡过程4.衰荡时间与反射率的关系5.测量步骤①.光腔调节:②.光腔衰荡测量:③.计算衰荡时间常数:④.反射率计算:6.实际应用中的调整7.技术优势和局限8.总结9.其他情况的代码案例:①角......
  • 实战网络攻防中的高版本JDK反射类加载浅析
    就是要打骨折http://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247486065&idx=2&sn=b30ade8200e842743339d428f414475e&chksm=c0e4732df793fa3bf39a6eab17cc0ed0fca5f0e4c979ce64bd112762def9ee7cf0112a7e76af&scene=21#wechat_redirect《Java代码审计》http:......
  • Java中的反射(1)——Class类、访问字段、调用方法
            Java中的反射机制是一种强大的工具,它允许程序在运行时动态地检查类的结构、修改对象的属性或调用方法。反射可以打破封装,从而访问类的私有字段或方法,甚至可以在不提前知道类或方法的情况下,动态创建对象并调用它们。我们可以从以下三个方面来详细解析:Class类、......
  • Java安全-反射
    反射​反射是一种强大的机制,它允许程序在运行时访问、检查和修改它自己的结构,比如类、接口、字段(属性)和方法。反射提供了一种动态性,使得Java程序可以在运行时处理对象和类。所以说通过反射,我们可以使java这类静态语言附上动态的特征。几个反射中重要的方法:获取类的⽅法:......
  • [整理]C#反射(Reflection)详解
    [整理]C#反射(Reflection)详解本人理解:装配件:Assembly(程序集)晚绑定:后期绑定MSDN:反射(C#编程指南)-----------------原文如下--------1、什么是反射2、命名空间与装配件的关系3、运行期得到类型信息有什么用4、如何使用反射获取类型5、如何根据类型来动态创建对象6、......
  • go gorm 通用微服务反射实现通用增删改查功能
    packagepagedbimport("errors""fmt""git.ichub.com/general/webcli120/goconfig/base/basedto""git.ichub.com/general/webcli120/goconfig/base/baseutils""git.ichub.com/general/webcli120/goc......
  • 5.XSS-反射型(post)利用:获取cookie
    原理:文件路径:\pikachu\pkxss\xcookie\post.html将post.html文件,复制到皮卡丘的根路径下或者根下随意路径即可,并编辑文件需要修改以下两个地址,第一个地址是将原界面的样子链接过来,让用户认为是原界面,第二个是将cookie从数据库中提取出来的程序(注意和自己的目录相对应)基于域名配......
  • 手写mybatis之把反射用到出神入化
    前言但在实操上,很多码农根本没法阅读框架源码。首先一个非常大的问题是,面对如此庞大的框架源码,不知道从哪下手。与平常的业务需求开发相比,框架源码中运用了大量的设计原则和设计模式对系统功能进行解耦和实现,也使用了不少如反射、代理、字节码等相关技术。如果你有......
  • JAVA反射是什么(反射的作用)
    反射概述反射是什么反射(Reflection)是Java的特征之一,它允许运行中的Java程序获取自身的信息,并且可以操作类或对象的内部属性。Oracle官方对反射的解释是:ReflectionenablesJavacodetodiscoverinformationaboutthefields,methodsandconstructorsofloa......