Python类的反射实例

2025-04-24 05:43:36

1、打开python开发工具IDLE,新建‘clsref.py文件’,并写代码如下:class Test(): def __init__(self,name): self._name = name def test1(self): print ('test1')t1 = Test('hello')print (globals())

Python类的反射实例

2、F5运行程序,打印出全局变量的字典,globals()函数就是这个作用,其中包含定义的Test类及t1对象

Python类的反射实例

3、利用globals(拘七呷憎)函数实现反射,代码如下:class Test(): def __init__(self,name): self._name = name def t髫潋啜缅est1(self): print ('test1')t1 = Test('hello')print (globals())clz = 'Test'fn = 'test1't2 = globals()[clz]('world')fun = getattr(t2,fn)fun()globals()通过类名的key,定位到类地址,然后实例化t2对象,getattr获取对象的方法

Python类的反射实例

4、F5运行程序,对象t2调用的test1()方法

Python类的反射实例

5、也可以创建对象后直接使用getattr方法,代码如下:class Test(): def __init__(self,name): self._name = name def test1(self): print ('test1')t1 = Test('hello')f1=getattr(t1,'test1')f1()clz = 'Test'fn = 'test1't2 = globals()[clz]('world')fun = getattr(t2,fn)fun()

Python类的反射实例

6、F5运行程序,对象t1也调用的test1()方法

Python类的反射实例

7、判断函数是豸阏恢闲否存在hasattr()方法,代码如下:class Test(): def __init__(self,name): self._name = name 颊俄岿髭def test1(self): print ('test1')t1 = Test('hello')print (hasattr(t1,'test1'))f1=getattr(t1,'test1')f1()clz = 'Test'fn = 'test1't2 = globals()[clz]('world')fun = getattr(t2,fn)fun()

Python类的反射实例

8、F5运行程序,打印出True,类Test存在test1()方法

Python类的反射实例
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢