Python类的反射实例

 时间:2026-02-13 17:03:05

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 test1(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类的反射实例

  • MySQL 8.0.12在Windows电脑下安装教程
  • 三国志幻想大陆如何配置神兵
  • 鬼谷八荒怎么收集雷灵气碎片
  • 天堂2:血盟奇岩阵营战攻略
  • TongWeb6.0 如何开启jmx访问
  • 热门搜索
    白木耳的做法大全 瞬狙怎么练 挖掘机视频大全儿童版 送爸爸礼物排行大全 尿蛋白高怎么办 炒肉片的家常做法 卤面怎么做好吃 王者荣耀图片大全 红烧猪脚的家常做法 儿童谜语大全