概述
反射/自省
反射,reflection,指的是运行时获取类型定义信息。
一个对象能够在运行时,像照镜子一样,反射出其类型信息。简单说,在Python中,能够通过一个对象,找出其type、class、attribute或method的能力,称为反射或自省。
具有反射能力的函数有type(),isinstance(),callable().dir().getattr()等
- getattr(object,name[,default]):通过name返回object的属性值,当属性不存在,将属性不存在,将使用default返回,如果没有default,则抛出AttributeError,name必须是字符串
class Test: name = 'Jax' def a(self): print('10') print(getattr(Test, 'name', 'none')) >>> Jax print(getattr(Test, 'a', 'none')) >>> <function Test.add at 0x0000020972857158> t = Test() getattr(t,'a')() >>>10
- setattr(object,name,value):object的属性,存在则覆盖,不存在则新增
value可以为值
也可以为匿名函数class Test: name = 'Jax' def a(self): print('10') t = Test() setattr(t,'name', lucy) print(t.name) >>> lucy
class Test: name = 'Jax' def add(self): print('10') t = Test() setattr(t, 'name', lambda x: x - 1) a = t.name(5) print(a) >>>4
- hasaattr(object,name):判断对象是否有这个名字的属性,name必须为字符串
class Test: name = 'Jax' def ad(self): print('10') a = hasattr(Test, 'name') print(a) >>> True
import test if hasattr(test,'name'): func = getattr(test,'name') func() else: print('不存在') >>> 不存在
最后
以上就是俭朴哑铃为你收集整理的Python--类的反射的全部内容,希望文章能够帮你解决Python--类的反射所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复